1
0

Compare commits

...

129 Commits

Author SHA1 Message Date
Joel Challis
354edac63a Revert to last known working version (#20967) 2023-05-16 06:46:11 +01:00
dependabot[bot]
b906e773b0 Bump anothrNick/github-tag-action from 1.64.0 to 1.65.0 (#20964)
* Bump anothrNick/github-tag-action from 1.64.0 to 1.65.0

Bumps [anothrNick/github-tag-action](https://github.com/anothrNick/github-tag-action) from 1.64.0 to 1.65.0.
- [Release notes](https://github.com/anothrNick/github-tag-action/releases)
- [Commits](https://github.com/anothrNick/github-tag-action/compare/1.64.0...1.65.0)

---
updated-dependencies:
- dependency-name: anothrNick/github-tag-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update auto_tag.yml

Allow manual trigger

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2023-05-16 01:57:47 +01:00
vushthestampede
feee0f5154 Update tg4x RGB LED count (#20955) 2023-05-15 17:02:55 +01:00
Purdea Andrei
96d3750483 Fix EEPROM_DRIVER=legacy_stm32_flash (#20457) 2023-05-15 22:29:25 +10:00
Nick Brassel
507e32b28c Generate make dependency file during build for info.json's etc. (#20451) 2023-05-15 21:58:12 +10:00
Jason Hazel
d6f8df4be8 hazel/bad_wings update (#20947)
Changed default keymap to use json, added personal keymap, and changed CIRQUE_DEVICE_GESTURES_SCROLL_ENABLE to POINTING_DEVICE_GESTURES_SCROLL_ENABLE
2023-05-15 11:18:20 +01:00
jotix
09666ea251 jotix keymap update (#20902) 2023-05-14 09:15:27 +02:00
Nick Brassel
0b672f8775 Far better VSCode intellisense support using clangd. (#20382) 2023-05-14 15:32:34 +10:00
takashicompany
cead6afc34 Add new keyboard "Ergomirage" (#20655)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-05-13 09:01:31 +01:00
DeskDaily
9992d5dcfc [Keyboard] Add Zwag75 keyboard (#20757)
Co-authored-by: Neil Brian Ramirez <nightlykeyboards@gmail.com>
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2023-05-13 09:00:14 +01:00
biuboom-jun
b1cd166ea8 [Keyboard] Add kibou/fukuro (#20771)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-05-13 08:57:58 +01:00
Moritz Plattner
dc9df5a305 [Keyboard] Add Teleport TKL (#20469)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-05-13 08:32:39 +01:00
peepeetee
8726a2653a momokai tap_* rgb modes and bootmagic key update (#20126) 2023-05-13 07:19:18 +01:00
Daniel Shields
b833cd0d07 [Keymap] Add caps word enable to dshields keymaps (#20862)
Co-authored-by: Daniel Shields <dshields@cboe.com>
2023-05-12 20:43:52 -07:00
dependabot[bot]
6fdb997e8c Bump anothrNick/github-tag-action from 1.63.0 to 1.64.0 (#20911)
Bumps [anothrNick/github-tag-action](https://github.com/anothrNick/github-tag-action) from 1.63.0 to 1.64.0.
- [Release notes](https://github.com/anothrNick/github-tag-action/releases)
- [Commits](https://github.com/anothrNick/github-tag-action/compare/1.63.0...1.64.0)

---
updated-dependencies:
- dependency-name: anothrNick/github-tag-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-12 22:42:58 +01:00
dependabot[bot]
f8d01e5eca Bump anothrNick/github-tag-action from 1.62.0 to 1.63.0 (#20868)
Bumps [anothrNick/github-tag-action](https://github.com/anothrNick/github-tag-action) from 1.62.0 to 1.63.0.
- [Release notes](https://github.com/anothrNick/github-tag-action/releases)
- [Commits](https://github.com/anothrNick/github-tag-action/compare/1.62.0...1.63.0)

---
updated-dependencies:
- dependency-name: anothrNick/github-tag-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-11 21:04:34 +01:00
leyew
5c2e668190 [Keyboard] Add dnworks/SBL (#20652)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-05-08 23:57:28 -07:00
eatmyvenom
db229d7341 Add vnmm keymaps and userspace (#20446)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-05-06 14:32:51 -06:00
Nick Brassel
88780bf710 Fixup QP font rendering when --no-ascii is specified. (#20637) 2023-05-06 15:53:14 +01:00
DeskDaily
a4be9b0ccb [Keyboard] Navi60 Keymap Edit (#20758)
Co-authored-by: Neil Brian Ramirez <nightlykeyboards@gmail.com>
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2023-05-06 07:46:01 -07:00
ziptyze
7f413e9f01 [Keyboard] Add 1upkeyboards pi50 (#20242)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-05-04 12:29:45 -07:00
IreuN
a4b36f0b4b sofle/via encoder map & doc handedness update (#20630) 2023-05-03 20:07:32 -06:00
Dennis Kruyt
9b41e8168d [Keyboard] add phantagom/baragon marcopad (#20543)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Tom Barnes <barnestom@me.com>
2023-05-01 20:28:05 -07:00
Dennis Kruyt
e206a1684e [Keyboard] add phantagom/varan rgb numpad (#20587)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-05-01 20:20:02 -07:00
Robert Mills
62a90945c7 [Keymap] Small changes to fix failing karn keyboard build (#20618) 2023-05-01 19:39:30 -07:00
Christopher Hoage
0b62a4ef72 Repair Spleeb i2c config and chrishoage keymap (#20644) 2023-04-30 11:59:45 -07:00
Jesse Estes
c55c7fed83 Adding my keymap (#20345) 2023-04-30 19:01:25 +10:00
Alex Miller
40380c2684 Add additional options for Drag Scroll config (#20523) 2023-04-30 15:28:00 +10:00
Felix Jen
a68b620112 Added Velvet Hotswap and Solder PCBs (#20510) 2023-04-30 12:33:01 +10:00
mechlovin
aa7628641c [Keyboard] Add the Aster Ergo PCB (#20513) 2023-04-30 12:32:08 +10:00
Vertex-kb
ea4136bc2b vertex/angle65 - Implement RGBlight (#20514) 2023-04-30 12:31:22 +10:00
Lui Wolff
cdf640578b [Keymap update] Keymap & docs update (#20298)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-30 11:59:17 +10:00
Christopher Berner
7138fa4582 Fix MATRIX_HAS_GHOST when MATRIX_COL > 16 (#20093) 2023-04-30 11:56:58 +10:00
Sergey Vlasov
ccb37b155c ez_maker/directpins/promicro: Fix bootloader mismatch (#20627)
Setting the bootloader for something with `promicro` in the name to
`atmel-dfu` was really confusing.
2023-04-29 20:05:24 +01:00
adophoxia
64b84385cd Fix up positioning of keys for Keychron Q10/V10 and Q6/V6 (#20582) 2023-04-27 19:17:21 +01:00
John Stegeman
e90d9fcfff [Keymap] Add johnstegeman iris colemak keymap (#20575) 2023-04-26 14:45:03 -06:00
Alex Paulescu
d61a5f4343 [Keyboard] Add Manibus VIA support (#20497)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-04-25 20:57:36 -07:00
adophoxia
713427c086 Add KBDCraft Adam64 Lego board (#20503)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-23 13:07:35 -06:00
Albert Y
e1afcda1c0 Update code example to match description (#20528) 2023-04-23 12:56:45 -06:00
yiancar
ab4013a69e NK Plus (#20392) 2023-04-21 14:55:54 +01:00
precondition
974c01b4f8 [Docs] Fix suggested code pattern when a specific mod-mask is required. (#20512) 2023-04-20 19:41:53 -06:00
Albert Y
387b64a79b [Docs] Remove combo count from array (#20511) 2023-04-20 08:47:26 -07:00
Sleepdealer
6d8a1aa676 Add QuadrumLabs Delta (#20409) 2023-04-20 07:58:12 +01:00
Nathan Faber
952cdc7be5 Adds Docs option for ArduinoIDE's example ArduinoISP (#20486) 2023-04-19 19:23:50 +01:00
Albert Y
e0a09ff728 GMMK 2 volume up/down Fn keys are backwards in default mapping (#20476) 2023-04-17 13:11:22 +01:00
LawsonStation
990ee8075e Fix typo in feature_wpm.md title (#20464) 2023-04-16 15:14:08 +01:00
Zykrah
697f53a154 [Keyboard] Add Kalakos Bahrnob65 (#20424)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-04-15 23:31:51 -06:00
Joel Challis
cefef18ceb Tidy up stray RGB_DISABLE_TIMEOUT references (#20460) 2023-04-15 23:21:58 -06:00
spbgzh
6e5ff018e3 [Keyboard] Add zoom75 wired (#20396) 2023-04-15 23:14:51 -06:00
Wycer
75b7140cbd [Keyboard] Add dymium65 (#20257)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Wycer <wycers@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: linyer-qwq <990842844@qq.com>
Co-authored-by: Linyer-qwq <32816392+Linyer-qwq@users.noreply.github.com>
2023-04-15 14:36:17 -06:00
Markus Knutsson
28c11ed348 Lotus58 glow (#20386)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
2023-04-15 19:34:09 +01:00
James Young
d732b0b849 ADPenrose Obi Layout Macro Conversion and Addition (#20445)
* add matrix_diagram.md

* info.json: apply friendly formatting

* move matrix data to info.json

* add LAYOUT_625u_space with reference keymap
2023-04-15 10:36:11 -07:00
Albert Y
6d965d486c Add hardware information momokai keyboards (#20434) 2023-04-12 22:04:02 -06:00
James Young
ce417226b2 4pplet/eagle_viper_rep/rev_a Layout Macro Conversion and Additions (#20414)
* info.json: apply friendly formatting

* add matrix_diagram.md

* move matrix data to info.json

* add LAYOUT_60_ansi_split_bs_rshift

* add LAYOUT_60_tsangan_hhkb

* add LAYOUT_60_hhkb
2023-04-12 14:29:29 -07:00
Paulo Pereira
0382a25e35 [Keymap] Add paulomp90 lily58 keymap (#20327)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-12 13:28:26 -06:00
Tommy Oldfield
83dcbefeed [Keymap] Add personal keymap for Lily58 (#18735) 2023-04-12 10:31:47 -07:00
Josh Hinnebusch
18335ddda5 [Keyboard] Fix h87 g2 VID conflict (#20388) 2023-04-12 10:27:37 -07:00
Ryan
051485c579 [Keymap] PHSC138 Keymap for Atom47 (#18768)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-12 08:35:12 -07:00
Jeff Epler
5012dfd719 [Keyboard] add kb2040 flavor of gherkin (#18360) 2023-04-12 08:33:42 -07:00
Less/Rikki
641698d356 [Keyboard] ymdk/id75 (#19967)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-12 08:07:47 -07:00
Mike Killewald
75edefe541 fixing bug that caused KC_DEL and KC_MUTE (encoder press) to be swapped (#20420) 2023-04-12 11:10:50 +01:00
James Young
7e6eba674a 4pplet/bootleg/rev_a Layout Macro Conversion and Addition (#20400)
* info.json: apply friendly formatting

* move matrix data to info.json

* add LAYOUT_60_ansi_split_bs_rshift
2023-04-11 13:26:41 -07:00
James Young
26b35a54cf 4pplet/aekiso60 Layout Macro Conversion and Additions (#20399)
* add matrix_diagram.md

Adds `matrix_diagram.md` to the `4pplet/aekiso60` directory, and removes the diagrams from the keyboard revision header files.

* info.json: apply friendly formatting

* move matrix data to info.json

* create keyboard-level info.json

* add LAYOUT_60_iso_tsangan

* enable Community Layout support
2023-04-11 11:31:56 -07:00
Joel Challis
38700f7e3f Reject info.json at keymap level (#20408) 2023-04-11 02:43:45 +01:00
dependabot[bot]
ed72c423be Bump anothrNick/github-tag-action from 1.61.0 to 1.62.0 (#20407)
Bumps [anothrNick/github-tag-action](https://github.com/anothrNick/github-tag-action) from 1.61.0 to 1.62.0.
- [Release notes](https://github.com/anothrNick/github-tag-action/releases)
- [Commits](https://github.com/anothrNick/github-tag-action/compare/1.61.0...1.62.0)

---
updated-dependencies:
- dependency-name: anothrNick/github-tag-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 23:49:53 +01:00
Vertex-kb
bc6db2823c [Keyboard] Update angle65 VID/PID (#20401) 2023-04-10 13:32:16 -06:00
Nick Brassel
fb706f42a2 Run CI builds for each push, limit queued workflow depth to 1. (#20362) 2023-04-09 22:38:09 +01:00
Ryan
9132c64389 Add numpad 0-9 to second layer, update keycodes for QMK 0.17.5, fix layout (#20375) 2023-04-09 22:32:40 +01:00
Dasky
6e0acf0548 Add autocomplete to generate-compilation-database (#20387) 2023-04-09 17:41:30 +01:00
Drashna Jaelre
2c375e6478 [Keyboard] Add audio support to Adafruit MacroPad RP2040 (#20353) 2023-04-08 10:59:13 +10:00
Duncan Sutherland
a5e68e5f74 Convertors documentation: Removed duplicate table entry (#20360) 2023-04-07 23:11:56 +01:00
Joel Challis
e9b36bebb2 Avoid generating empty ENCODER_RESOLUTION (#20179) 2023-04-07 14:07:59 +01:00
Nick Brassel
df7b56e0ea Fixup CI build variables. (#20357) 2023-04-07 18:38:16 +10:00
Nick Brassel
2e766a9c7a Add Discord webhook at end of each CI run. (#20355) 2023-04-07 16:37:06 +10:00
Albert Y
4ba3fdfad2 Move a_dux to data-driven (#20043) 2023-04-06 22:27:51 -06:00
lalalademaxiya1
655c24d29d [Keyboard] Add Keychron Q11 (#20125)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-04-06 11:02:24 -07:00
dependabot[bot]
eab2b8faa0 Bump peter-evans/create-pull-request from 4 to 5 (#20346)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-05 23:34:35 +01:00
Luis Garcia
d058091d0b Add peterfalken userspace & keymaps (#19897)
Co-authored-by: Peter.Falken <luis.garcia@bitjester.com>
2023-04-05 12:35:34 -06:00
Álvaro A. Volpato
596319c92f Add Iron160 I160-S and I160-H PCBs support (#20077)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-05 12:28:27 -06:00
DeskDaily
4d17fe2a99 [Keyboard] Add lxxt (#19935)
Co-authored-by: Neil Brian Ramirez <nightlykeyboards@gmail.com>
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2023-04-05 12:25:21 -06:00
Dane Skalski
1d045e854b Add Junco Keyboard (#19516) 2023-04-05 18:06:24 +10:00
Alex Miller
f7176f070f [Keyboard] Add Budgy and Crowboard Keyboards (#19141)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-04 14:36:23 -07:00
Nick Brassel
687883cf7d Resolve keyboard names for qmk mass-compile. (#20335) 2023-04-04 15:09:55 +10:00
Albert Y
f56cf93fa1 Add debounce time description (#20333) 2023-04-04 12:15:00 +10:00
Alex Paulescu
1fd30b3391 Manibus keyboard, update pinout (#20309) 2023-04-04 09:13:42 +10:00
Albert Y
37f205ec1a Use table for debounce algorithm description (#20322) 2023-04-04 09:06:33 +10:00
blindassassin111
26e0bfd494 [keyboard] Adding OSAv2 numpad (#20209)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-04 09:05:13 +10:00
Andrew Kannan
a434507ab4 Add Ripple TKL Keyboard firmware (#20301) 2023-04-04 08:56:12 +10:00
Andrew Kannan
ee8c86702e Add Ripple TKL Hotswap Firmware (#20302)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-04-04 08:55:38 +10:00
Cameron Larsen
246cf99b4b Personal keymaps for crkbd and kyria (#20009) 2023-04-04 08:43:12 +10:00
Anjheos
eb52984a94 Adding Oceanographer to QMK. (#20324) 2023-04-03 21:18:08 +01:00
Danny
a5272a1575 Modify default encoder mappings, change PID, enable mousekeys (#20329) 2023-04-03 19:49:21 +01:00
Ryan
d06ce0153b PR checklist: keyboard updates must go to develop (#20323) 2023-04-03 16:34:03 +10:00
Purdea Andrei
c58610bea3 Data-driven updates to overnumpad controller keyboards (#20259) 2023-04-03 15:45:46 +10:00
Julius Degesys
12de0297ed Suggest qmk list-keyboards when testing build environment (#19471)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-04-03 15:42:14 +10:00
Lisa Ugray
4992df56b8 Add an alternate layout definition for Keyboardio Model 01 (#20245) 2023-04-03 15:39:52 +10:00
studiokestra
f3f0bf6dbe Refactor Galatea (#20011) 2023-04-03 15:37:43 +10:00
4pplet
8a5e8ed88e Adding Unextended Standard PCB (#20190)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: 4pplet <4pplet@protonmail.com>
Co-authored-by: 4pplet <stefan.ess@gmail.com>
2023-04-03 15:24:49 +10:00
3araht
fb6557acf1 New layer added to giabalanai keyboard (#20118) 2023-04-03 15:12:11 +10:00
Sergey Vlasov
2d7240f730 onekey: Fix console output on AVR (#19930) 2023-04-03 14:28:12 +10:00
Wilba
1d1c407e4e Update WT60-H1, WT60-H3 layouts (#20114) 2023-04-03 13:09:15 +10:00
Torsten Schneider
9152928f02 Adding my keymap (#19964) 2023-04-03 13:05:48 +10:00
Pablo Martínez
15a106b1ef [Bugfix] Check QGF's bpp against display's native_bits_per_pixel (#19995) 2023-04-03 12:42:46 +10:00
andi4000
ac9f9f9efb ISO-DE Keymap for Dactyl Manuform 6x7 (#19441) 2023-04-03 10:06:40 +10:00
Woongbin Kang
ec83c0b185 Add recommendations for VSCode intellisense (#19402) 2023-04-03 10:05:48 +10:00
HorrorTroll
d300811009 Add user horrortroll in userspace (#19769) 2023-04-03 08:24:04 +10:00
Jay Greco
27e6e27d3a [Keyboard] Add nullbits SNAP keyboard (#18916)
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-04-02 12:12:06 -07:00
Moritz Plattner
5687fc7646 Add support for Geistmaschine Macropod (#20116)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
2023-04-02 12:02:20 -06:00
Travis Reed
ebe36ea83c [Keymap] Add dancxjo hotdox76v2 keymap (#20016) 2023-04-02 12:01:06 -06:00
cttt
6b205c3064 [Keyboard] Add Erdnuss 65 (#20202)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-02 11:55:20 -06:00
butterkeebs
b5d0c44690 [Keyboard] Add pocketpad (#20229)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-02 11:50:14 -06:00
Thomaz Peres
d0e0b9e583 [Keyboard] Add Royal Kludge RKG-68 (#20138) 2023-04-02 11:49:05 -06:00
mechlovin
b0dc99fbd8 [Keyboard] Add Mechlovin9 rev.3 (#20119)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-02 11:47:07 -06:00
Raphael Mangubat
5b8dae0d61 Enable encoder mapping in VIA for Keebio KBO-5000 (#20272) 2023-04-02 11:23:26 -06:00
Vertex-kb
fd56a2a1dc Add angle65 (#19986)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-04-02 11:08:53 -06:00
Alexander Kagno
be9f6e679b [Keymap] update arkag keymap, add hitbox layout (#20271)
Co-authored-by: Alex Kagno <alex@turncommerce.com>
2023-04-02 01:57:54 -07:00
Cameron Varley
b53356f7ab [Keyboard] Add GMMK Numpad (#20067)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-02 01:34:54 -07:00
Albert Y
c402bac023 [Keymap] Ferris - Add split USB detection directive (#20213) 2023-04-02 01:28:00 -07:00
Shane Dowling
a030e8094f [Keymap] Add md40 ckrbd keymap (#19931)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-02 01:27:04 -07:00
Nick Brassel
c3c401f91d [QP] Fix up delta frame boundaries (#20296) 2023-03-31 08:41:11 +11:00
Alejandro Chacón
b63e388692 [Keyboard update] Fix json error (#20299) 2023-03-30 18:25:42 +01:00
Nick Brassel
81f3f0f3e9 Revert to hex output for kint41 (#20295) 2023-03-30 01:41:36 +01:00
Maverick0197
d0c36a7683 [Keyboard] Add KeyDeck8 (#20107)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-29 13:13:05 -07:00
4pplet
c6cc638752 [Keyboard] Add Steezy60 Rev B (#19688)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
Co-authored-by: yiancar <yiancar@gmail.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: Jue Liu <youturn@Jues-MacBook-Pro.local>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Shandon Anderson <shandon@shandon.codes>
Co-authored-by: jack <0x6A73@pm.me>
Co-authored-by: jason <jrucker2004@gmail.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-03-29 13:10:47 -07:00
Sắn
621dbdf8ee [Keyboard] Add Plaque80 (#20240)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2023-03-29 13:34:42 -06:00
Alejandro Chacón
896f38c52c [Keyboard] Add alhenkb macropad (#20123) 2023-03-29 11:47:14 -07:00
Joel Challis
f56580404d Minify content published to API (#20285) 2023-03-29 13:01:16 +01:00
Nick Brassel
5bb8f7ae84 Add ability for qmk mass-compile to build specified targets (#20294) 2023-03-29 21:26:05 +11:00
Nick Brassel
d31d1488e8 Fixup CI command failures. (#20291) 2023-03-29 16:48:57 +11:00
714 changed files with 42800 additions and 4796 deletions

4
.clangd Normal file
View File

@@ -0,0 +1,4 @@
CompileFlags:
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
Remove: [-W*, -mcall-prologues]
Compiler: clang

View File

@@ -4,6 +4,7 @@ permissions:
contents: write
on:
workflow_dispatch:
push:
branches:
- master
@@ -31,7 +32,7 @@ jobs:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.61.0
uses: anothrNick/github-tag-action@1.62.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'

View File

@@ -4,22 +4,27 @@ permissions:
contents: read
on:
push:
branches: [master, develop]
workflow_dispatch:
schedule:
- cron: '0 0,12 * * *'
inputs:
branch:
type: choice
description: 'Branch to build'
options: [master, develop]
concurrency: ci_build-${{ github.event.inputs.branch || github.ref_name }}
jobs:
ci_builds:
if: github.repository == 'qmk/qmk_firmware'
name: "CI Build"
runs-on: self-hosted
timeout-minutes: 1380
if: github.repository == 'qmk/qmk_firmware'
strategy:
fail-fast: false
matrix:
branch: [master, develop]
keymap: [default, via]
container: qmkfm/qmk_cli
@@ -31,7 +36,7 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: recursive
ref: ${{ matrix.branch }}
ref: ${{ github.event.inputs.branch || github.ref }}
- name: Install dependencies
run: pip3 install -r requirements.txt
@@ -39,20 +44,31 @@ jobs:
- name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }})
run: |
export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null)
qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} -e DUMP_CI_METADATA=yes
qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} -e DUMP_CI_METADATA=yes || touch .failed
# Generate the step summary markdown
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
# Truncate to a maximum of 1MB to deal with GitHub workflow limit
truncate --size='<960K' $GITHUB_STEP_SUMMARY
truncate --size='<960K' $GITHUB_STEP_SUMMARY || true
# Exit with failure if the compilation stage failed
[ ! -f .failed ] || exit 1
- name: 'Upload artifacts'
uses: actions/upload-artifact@v3
if: always()
with:
name: artifacts-${{ matrix.branch }}-${{ matrix.keymap }}
name: artifacts-${{ github.event.inputs.branch || github.ref_name }}-${{ matrix.keymap }}
if-no-files-found: ignore
path: |
*.bin
*.hex
*.uf2
.build/failed.*
- name: 'CI Discord Notification'
if: always()
working-directory: util/ci/
env:
DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }}
run: |
python3 -m pip install -r requirements.txt
python3 ./discord-results.py --branch ${{ github.event.inputs.branch || github.ref_name }} --keymap ${{ matrix.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

View File

@@ -47,7 +47,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}

View File

@@ -34,7 +34,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}

3
.gitignore vendored
View File

@@ -30,6 +30,9 @@ quantum/version.h
*.qmk
*.uf2
# DD config at wrong location
/keyboards/**/keymaps/*/info.json
# Old-style QMK Makefiles
/keyboards/**/Makefile

View File

@@ -3,7 +3,7 @@
"recommendations": [
"EditorConfig.EditorConfig",
"xaver.clang-format",
"ms-vscode.cpptools",
"llvm-vs-code-extensions.vscode-clangd",
"bierner.github-markdown-preview",
"donjayamanne.git-extension-pack"
]

View File

@@ -26,6 +26,9 @@
},
"python.formatting.provider": "yapf",
"[json]": {
"editor.formatOnSave": false
}
"editor.formatOnSave": false
},
"clangd.arguments": [
"--header-insertion=never"
]
}

View File

@@ -343,6 +343,15 @@ $(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.c $(KEYBOARD_OUTPUT)/src/default_keyboard.h
generated-files: $(KEYMAP_OUTPUT)/src/info_deps.d
$(KEYMAP_OUTPUT)/src/info_deps.d:
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-make-dependencies -kb $(KEYBOARD) -km $(KEYMAP) -o $(KEYMAP_OUTPUT)/src/info_deps.d)
@$(BUILD_CMD)
-include $(KEYMAP_OUTPUT)/src/info_deps.d
.INTERMEDIATE : generated-files
# Userspace setup and definitions

View File

@@ -213,10 +213,10 @@ else
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_FLASH_EMULATED
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_stm32.c flash_stm32.c
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
else ifeq ($(strip $(EEPROM_DRIVER)), transient)
# Transient EEPROM implementation -- no data storage but provides runtime area for it
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT

View File

@@ -37,9 +37,9 @@ For more information on bitwise operators in C, click [here](https://en.wikipedi
In practice, this means that you can check whether a given modifier is active with `get_mods() & MOD_BIT(KC_<modifier>)` (see the [list of modifier keycodes](keycodes_basic.md#modifiers)) or with `get_mods() & MOD_MASK_<modifier>` if the difference between left and right hand modifiers is not important and you want to match both. Same thing can be done for one-shot modifiers if you replace `get_mods()` with `get_oneshot_mods()`.
To check that *only* a specific set of mods is active at a time, AND the modifier state and your desired mod mask as explained above and compare the result to the mod mask itself: `get_mods() & <mod mask> == <mod mask>`.
To check that *only* a specific set of mods is active at a time, use a simple equality operator: `get_mods() == <mod mask>`.
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods() & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
The full list of mod masks is as follows:
@@ -91,7 +91,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_ESC:
// Detect the activation of only Left Alt
if ((get_mods() & MOD_BIT(KC_LALT)) == MOD_BIT(KC_LALT)) {
if (get_mods() == MOD_BIT(KC_LALT)) {
if (record->event.pressed) {
// No need to register KC_LALT because it's already active.
// The Alt modifier will apply on this KC_TAB.
@@ -184,4 +184,4 @@ This page used to encompass a large set of features. We have moved many sections
## Key Overrides :id=key-overrides
* [Key Overrides](feature_key_overrides.md)
* [Key Overrides](feature_key_overrides.md)

View File

@@ -58,7 +58,7 @@ const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END};
const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
combo_t key_combos[] = {
[AB_ESC] = COMBO(ab_combo, KC_ESC),
[JK_TAB] = COMBO(jk_combo, KC_TAB),
[QW_SFT] = COMBO(qw_combo, KC_LSFT),

View File

@@ -17,7 +17,6 @@ Currently the following converters are available:
| `promicro` | `bit_c_pro` |
| `promicro` | `stemcell` |
| `promicro` | `bonsai_c4` |
| `promicro` | `elite_pi` |
| `promicro` | `rp2040_ce` |
| `promicro` | `elite_pi` |
| `promicro` | `helios` |

View File

@@ -57,78 +57,78 @@ susceptible to noise, you must choose a debounce method that will also mitigate
if the scanning is slow, and you are using a timestamp-based algorithm, you might end up making a debouncing decision based on only two
sampled values, which will limit the noise-resistance of the algorithm.
* Currently all built-in debounce algorithms support timestamp-based debouncing only. In the future we might
implement cycles-based debouncing, and it will be selectable via a ```config.h``` macro.
implement cycles-based debouncing, and it will be selectable via a `config.h` macro.
2) Symmetric vs Asymmetric
* Symmetric - apply the same debouncing algorithm, to both key-up and key-down events.
* Recommended naming convention: ```sym_*```
* Recommended naming convention: `sym_*`
* Asymmetric - apply different debouncing algorithms to key-down and key-up events. E.g. Eager key-down, Defer key-up.
* Recommended naming convention: ```asym_*``` followed by details of the type of algorithm in use, in order, for key-down and then key-up
* Recommended naming convention: `asym_*` followed by details of the type of algorithm in use, in order, for key-down and then key-up
3) Eager vs Defer
* Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
* Eager algorithms are not noise-resistant.
* Recommended naming conventions:
* ```sym_eager_*```
* ```asym_eager_*_*```: key-down is using eager algorithm
* ```asym_*_eager_*```: key-up is using eager algorithm
* `sym_eager_*`
* `asym_eager_*_*`: key-down is using eager algorithm
* `asym_*_eager_*`: key-up is using eager algorithm
* Defer - wait for no changes for DEBOUNCE ms before reporting change.
* Defer algorithms are noise-resistant
* Recommended naming conventions:
* ```sym_defer_*```
* ```asym_defer_*_*```: key-down is using defer algorithm
* ```asym_*_defer_*```: key-up is using defer algorithm
* `sym_defer_*`
* `asym_defer_*_*`: key-down is using defer algorithm
* `asym_*_defer_*`: key-up is using defer algorithm
4) Global vs Per-Key vs Per-Row
* Global - one timer for all keys. Any key change state affects global timer
* Recommended naming convention: ```*_g```
* Recommended naming convention: `*_g`
* Per-key - one timer per key
* Recommended naming convention: ```*_pk```
* Recommended naming convention: `*_pk`
* Per-row - one timer per row
* Recommended naming convention: ```*_pr```
* Recommended naming convention: `*_pr`
* Per-key and per-row algorithms consume more resources (in terms of performance,
and ram usage), but fast typists might prefer them over global.
## Debounce algorithms supported by QMK
## Supported Debounce Algorithms
QMK supports multiple debounce algorithms through its debounce API.
QMK supports multiple algorithms through its debounce API.
### Debounce selection
### Debounce Time
| DEBOUNCE_TYPE | Description | What else is needed |
| ------------- | --------------------------------------------------- | ----------------------------- |
| Not defined | Use the default algorithm, currently sym_defer_g | Nothing |
| custom | Use your own debounce code | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
| Anything Else | Use another algorithm from quantum/debounce/* | Nothing |
Default debounce time is 5 milliseconds and it can be changed with the following line in `config.h`:
```
#define DEBOUNCE 10
```
?> Setting `DEBOUNCE` to `0` will disable this feature.
**Regarding split keyboards**:
The debounce code is compatible with split keyboards.
### Debounce Method
### Selecting an included debouncing method
Keyboards may select one of the already implemented debounce methods, by adding to ```rules.mk``` the following line:
Keyboards may select one of the core debounce methods by adding the following line into `rules.mk`:
```
DEBOUNCE_TYPE = <name of algorithm>
```
Where name of algorithm is one of:
* ```sym_defer_g``` - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed.
* This is the current default algorithm. This is the highest performance algorithm with lowest memory usage, and it's also noise-resistant.
* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row.
For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be
appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use.
* ```sym_eager_pk``` - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key
* ```sym_defer_pr``` - debouncing per row. On any state change, a per-row timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that row, the entire row is pushed. Can improve responsiveness over `sym_defer_g` while being less susceptible than per-key debouncers to noise.
* ```sym_defer_pk``` - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed.
* ```asym_eager_defer_pk``` - debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed.
Name of algorithm is one of:
### A couple algorithms that could be implemented in the future:
* ```sym_defer_pr```
* ```sym_eager_g```
| Algorithm | Description |
| --------------------- | ----------- |
| `sym_defer_g` | Debouncing per keyboard. On any state change, a global timer is set. When `DEBOUNCE` milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant. |
| `sym_defer_pr` | Debouncing per row. On any state change, a per-row timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over `sym_defer_g` while being less susceptible to noise than per-key algorithm. |
| `sym_defer_pk` | Debouncing per key. On any state change, a per-key timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that key, the key status change is pushed. |
| `sym_eager_pr` | Debouncing per row. On any state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that row. |
| `sym_eager_pk` | Debouncing per key. On any state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that key. |
| `asym_eager_defer_pk` | Debouncing per key. On a key-down state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that key, the key-up status change is pushed. |
### Use your own debouncing code
You have the option to implement you own debouncing algorithm. To do this:
* Set ```DEBOUNCE_TYPE = custom``` in ```rules.mk```.
* Add ```SRC += debounce.c``` in ```rules.mk```
* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples.
?> `sym_defer_g` is the default if `DEBOUNCE_TYPE` is undefined.
?> `sym_eager_pr` is suitable for use in keyboards where refreshing `NUM_KEYS` 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage.
### Implementing your own debouncing code
You have the option to implement you own debouncing algorithm with the following steps:
* Set `DEBOUNCE_TYPE = custom` in `rules.mk`.
* Add `SRC += debounce.c` in `rules.mk`
* Implement your own `debounce.c`. See `quantum/debounce` for examples.
* Debouncing occurs after every raw matrix scan.
* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
* If the algorithm might be applicable to other keyboards, please consider adding it to ```quantum/debounce```
* Use num_rows instead of MATRIX_ROWS to support split keyboards correctly.
* If your custom algorithm is applicable to other keyboards, please consider making a pull request.

View File

@@ -434,6 +434,75 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key.
### Advanced Drag Scroll
Sometimes, like with the Cirque trackpad, you will run into issues where the scrolling may be too fast.
Here is a slightly more advanced example of drag scrolling. You will be able to change the scroll speed based on the values in set in `SCROLL_DIVISOR_H` and `SCROLL_DIVISOR_V`. This bit of code is also set up so that instead of toggling the scrolling state with set_scrolling = !set_scrolling, the set_scrolling variable is set directly to record->event.pressed. This way, the drag scrolling will only be active while the DRAG_SCROLL button is held down.
```c
enum custom_keycodes {
DRAG_SCROLL = SAFE_RANGE,
};
bool set_scrolling = false;
// Modify these values to adjust the scrolling speed
#define SCROLL_DIVISOR_H 8.0
#define SCROLL_DIVISOR_V 8.0
// Variables to store accumulated scroll values
float scroll_accumulated_h = 0;
float scroll_accumulated_v = 0;
// Function to handle mouse reports and perform drag scrolling
report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
// Check if drag scrolling is active
if (set_scrolling) {
// Calculate and accumulate scroll values based on mouse movement and divisors
scroll_accumulated_h += (float)mouse_report.x / SCROLL_DIVISOR_H;
scroll_accumulated_v += (float)mouse_report.y / SCROLL_DIVISOR_V;
// Assign integer parts of accumulated scroll values to the mouse report
mouse_report.h = (int8_t)scroll_accumulated_h;
mouse_report.v = (int8_t)scroll_accumulated_v;
// Update accumulated scroll values by subtracting the integer parts
scroll_accumulated_h -= (int8_t)scroll_accumulated_h;
scroll_accumulated_v -= (int8_t)scroll_accumulated_v;
// Clear the X and Y values of the mouse report
mouse_report.x = 0;
mouse_report.y = 0;
}
return mouse_report;
}
// Function to handle key events and enable/disable drag scrolling
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case DRAG_SCROLL:
// Toggle set_scrolling when DRAG_SCROLL key is pressed or released
set_scrolling = record->event.pressed;
break;
default:
break;
}
return true;
}
// Function to handle layer changes and disable drag scrolling when not in AUTO_MOUSE_DEFAULT_LAYER
layer_state_t layer_state_set_user(layer_state_t state) {
// Disable set_scrolling if the current layer is not the AUTO_MOUSE_DEFAULT_LAYER
if (get_highest_layer(state) != AUTO_MOUSE_DEFAULT_LAYER) {
set_scrolling = false;
}
return state;
}
```
## Split Examples
The following examples make use the `SPLIT_POINTING_ENABLE` functionality and show how to manipulate the mouse report for a scrolling mode.

View File

@@ -1,4 +1,4 @@
# Word Per Minute (WPM) Calculcation
# Word Per Minute (WPM) Calculation
The WPM feature uses time between keystrokes to compute a rolling average words per minute rate and makes this available for various uses.

View File

@@ -35,6 +35,40 @@ To use a 5V/16MHz Pro Micro as an ISP flashing tool, you will first need to load
!> Note that the `10` pin on the Pro Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Pro Micro to the `RESET` on the keyboard.
### Arduino Uno / Micro as ISP
[Arduino Uno](https://store.arduino.cc/products/arduino-uno-rev3)
[Arduino Micro](https://store.arduino.cc/products/arduino-micro)
A standard Uno or Micro can be used as an ISP flashing tool using the [example "ArduinoISP" sketch](https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP#load-the-sketch) to emulate an STK500 ISP. Also works with Sparkfun Pro Micros and clones.
**AVRDUDE Programmer**: `stk500v1`
**AVRDUDE Port**: Serial
#### Wiring
|Uno |Keyboard|
|-----------|--------|
|`5V` |`VCC` |
|`GND` |`GND` |
|`10` (`B2`)|`RESET` |
|`13` (`B5`)|`SCLK` |
|`11` (`B3`)|`MOSI` |
|`12` (`B4`)|`MISO` |
|Micro |Keyboard|
|-----------|--------|
|`5V` |`VCC` |
|`GND` |`GND` |
|`10` (`B6`)|`RESET` |
|`15` (`B1`)|`SCLK` |
|`16` (`B2`)|`MOSI` |
|`14` (`B3`)|`MISO` |
!> Note that the `10` pin on the Uno/Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Uno/Micro to the `RESET` on the keyboard.
### Teensy 2.0 as ISP
[PJRC Teensy 2.0](https://www.pjrc.com/store/teensy.html)
@@ -57,6 +91,7 @@ To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [spec
!> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard.
### SparkFun PocketAVR / USBtinyISP
[SparkFun PocketAVR](https://www.sparkfun.com/products/9825)

View File

@@ -172,6 +172,8 @@ For example, to build a firmware for a Clueboard 66% you would use:
qmk compile -kb clueboard/66/rev3 -km default
?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev3`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`.
When it is done you should have a lot of output that ends similar to this:
```

View File

@@ -46,16 +46,7 @@ Before starting, you will want to make sure that you have all of the build tools
This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly.
### Configuring VS Code
First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properties.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already.
Grab [this file](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) and save it. You may need to edit this file, if you didn't install MSYS2 to the default location, or are using WSL/LxSS.
Once you have saved this file, you will need to reload VS Code, if it was already running.
?> You should see an `extensions.json` and `settings.json` file in the `.vscode` folder, as well.
#### MSYS2 Setup
Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window.
@@ -101,17 +92,28 @@ No, really, that's it. The paths needed are already included when installing th
There are a number of extensions that you may want to install:
* [Git Extension Pack](https://marketplace.visualstudio.com/items?itemName=donjayamanne.git-extension-pack) -
This installs a bunch of Git related tools that may make using Git with QMK Firmware easier.
* [Git Extension Pack](https://marketplace.visualstudio.com/items?itemName=donjayamanne.git-extension-pack) - This installs a bunch of Git related tools that may make using Git with QMK Firmware easier.
* [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) - _[Optional]_ - This is the language server for C/C++ that VS Code uses. It provides IntelliSense and other features.
* [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) - _[Optional]_ - Helps to keep the code to the QMK Coding Conventions.
* [GitHub Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) - _[Optional]_ - Makes the markdown preview in VS Code more like GitHub's.
* [VS Live Share Extension Pack](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack) - _[Optional]_ - This extension allows somebody else to access your workspace (or you to access somebody else's workspace) and help out. This is great if you're having issues and need some help from somebody.
Restart once you've installed any extensions
Restart once you've installed any extensions.
# Configure VS Code for QMK
1. Click <kbd><kbd>File</kbd> > <kbd>Open Folder</kbd></kbd>
2. Open the QMK Firmware folder that you cloned from GitHub.
2. Open the QMK Firmware folder that you cloned from GitHub.
3. Click <kbd><kbd>File</kbd> > <kbd>Save Workspace As...</kbd></kbd>
And now you're ready to code QMK Firmware in VS Code
## Configuring VS Code
Using the [standard `compile_commands.json` database](https://clang.llvm.org/docs/JSONCompilationDatabase.html), we can get the VS code _clangd_ extension to use the correct includes and defines used for your keyboard and keymap.
1. Run `qmk generate-compilation-database -kb <keyboard> -km <keymap>` to generate the `compile_commands.json`.
1. Inside VS code, press <kbd><kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd></kbd> (macOS: <kbd><kbd>Command</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd></kbd>) to open the command palette.
1. Start typing `clangd: Download Language Server` and select it when it appears. Note that this only needs to be done once on clangd extension installation, if it didn't already ask to do so.
1. Inside VS code, press <kbd><kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd></kbd> (macOS: <kbd><kbd>Command</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd></kbd>) to open the command palette.
1. Start typing `clangd: Restart Language Server` and select it when it appears.
Now you're ready to code QMK Firmware in VS Code!

View File

@@ -53,6 +53,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- keyboard moves within the repository *must* go through the `develop` branch instead of `master`, so as to ensure compatibility for users
- `data/mappings/keyboard_aliases.hjson` must be updated to reflect the move, so users with pre-created configurator keymap.json files continue to detect the correct keyboard
- keyboard updates and refactors (eg. to data driven) *must* go through `develop` to reduce `master` -> `develop` merge conflicts
- PR submissions from a `kbfirmware` export (or equivalent) will not be accepted unless converted to new QMK standards -- try `qmk import-kbfirmware` first
- `info.json`
- With the move to [data driven](https://docs.qmk.fm/#/data_driven_config) keyboard configuration, we encourage contributors to utilise as many features as possible of the info.json [schema](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema).

View File

@@ -0,0 +1,71 @@
// Copyright 2023 ziptyze
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define OLED_DISPLAY_128X32
#define I2C1_SCL_PIN GP11
#define I2C1_SDA_PIN GP10
#define I2C_DRIVER I2CD1
#define OLED_BRIGHTNESS 128
#define OLED_FONT_H "keyboards/1upkeyboards/pi50/lib/glcdfont.c"
#define RGB_DI_PIN GP0
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGBLIGHT_LIMIT_VAL 150
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_BAND_SAT
# define ENABLE_RGB_MATRIX_BAND_VAL
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
# define ENABLE_RGB_MATRIX_CYCLE_ALL
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# define ENABLE_RGB_MATRIX_DUAL_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
# define ENABLE_RGB_MATRIX_RAINDROPS
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# define ENABLE_RGB_MATRIX_HUE_BREATHING
# define ENABLE_RGB_MATRIX_HUE_PENDULUM
# define ENABLE_RGB_MATRIX_HUE_WAVE
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
# define ENABLE_RGB_MATRIX_PIXEL_FLOW
# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# define ENABLE_RGB_MATRIX_SPLASH
# define ENABLE_RGB_MATRIX_MULTISPLASH
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

View File

@@ -0,0 +1,4 @@
// Copyright 2023 ziptyze (@ziptyze)
// SPDX-License-Identifier: GPL-2.0-or-later
#define RGB_MATRIX_LED_COUNT 60

View File

@@ -0,0 +1,142 @@
{
"rgb_matrix": {
"layout": [
{ "flags": 1, "matrix": [0, 0], "x": 10, "y": 7 },
{ "flags": 4, "matrix": [1, 0], "x": 28, "y": 7 },
{ "flags": 4, "matrix": [0, 1], "x": 46, "y": 7 },
{ "flags": 4, "matrix": [1, 1], "x": 65, "y": 7 },
{ "flags": 4, "matrix": [0, 2], "x": 84, "y": 7 },
{ "flags": 4, "matrix": [1, 2], "x": 102, "y": 7 },
{ "flags": 4, "matrix": [0, 3], "x": 121, "y": 7 },
{ "flags": 4, "matrix": [1, 3], "x": 140, "y": 7 },
{ "flags": 4, "matrix": [0, 4], "x": 159, "y": 7 },
{ "flags": 4, "matrix": [1, 4], "x": 177, "y": 7 },
{ "flags": 4, "matrix": [0, 5], "x": 196, "y": 7 },
{ "flags": 1, "matrix": [1, 5], "x": 215, "y": 7 },
{ "flags": 1, "matrix": [3, 5], "x": 215, "y": 19 },
{ "flags": 4, "matrix": [2, 5], "x": 196, "y": 19 },
{ "flags": 4, "matrix": [3, 4], "x": 177, "y": 19 },
{ "flags": 4, "matrix": [2, 4], "x": 159, "y": 19 },
{ "flags": 4, "matrix": [3, 3], "x": 140, "y": 19 },
{ "flags": 4, "matrix": [2, 3], "x": 121, "y": 19 },
{ "flags": 4, "matrix": [3, 2], "x": 102, "y": 19 },
{ "flags": 4, "matrix": [2, 2], "x": 84, "y": 19 },
{ "flags": 4, "matrix": [3, 1], "x": 65, "y": 19 },
{ "flags": 4, "matrix": [2, 1], "x": 46, "y": 19 },
{ "flags": 4, "matrix": [3, 0], "x": 28, "y": 19 },
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 19 },
{ "flags": 1, "matrix": [4, 0], "x": 9, "y": 32 },
{ "flags": 4, "matrix": [5, 0], "x": 28, "y": 32 },
{ "flags": 4, "matrix": [4, 1], "x": 46, "y": 32 },
{ "flags": 4, "matrix": [5, 1], "x": 65, "y": 32 },
{ "flags": 4, "matrix": [4, 2], "x": 84, "y": 32 },
{ "flags": 4, "matrix": [5, 2], "x": 102, "y": 32 },
{ "flags": 4, "matrix": [4, 3], "x": 121, "y": 32 },
{ "flags": 4, "matrix": [5, 3], "x": 140, "y": 32 },
{ "flags": 4, "matrix": [4, 4], "x": 159, "y": 32 },
{ "flags": 4, "matrix": [5, 4], "x": 177, "y": 32 },
{ "flags": 4, "matrix": [4, 5], "x": 196, "y": 32 },
{ "flags": 1, "matrix": [5, 5], "x": 215, "y": 32 },
{ "flags": 1, "matrix": [7, 5], "x": 215, "y": 45 },
{ "flags": 4, "matrix": [6, 5], "x": 196, "y": 45 },
{ "flags": 4, "matrix": [7, 4], "x": 177, "y": 45 },
{ "flags": 4, "matrix": [6, 4], "x": 159, "y": 45 },
{ "flags": 4, "matrix": [7, 3], "x": 140, "y": 45 },
{ "flags": 4, "matrix": [6, 3], "x": 121, "y": 45 },
{ "flags": 4, "matrix": [7, 2], "x": 102, "y": 45 },
{ "flags": 4, "matrix": [6, 2], "x": 84, "y": 45 },
{ "flags": 4, "matrix": [7, 1], "x": 65, "y": 45 },
{ "flags": 4, "matrix": [6, 1], "x": 46, "y": 45 },
{ "flags": 4, "matrix": [7, 0], "x": 28, "y": 45 },
{ "flags": 1, "matrix": [6, 0], "x": 9, "y": 45 },
{ "flags": 1, "matrix": [8, 0], "x": 9, "y": 57 },
{ "flags": 1, "matrix": [9, 0], "x": 28, "y": 57 },
{ "flags": 1, "matrix": [8, 1], "x": 46, "y": 57 },
{ "flags": 1, "matrix": [9, 1], "x": 65, "y": 57 },
{ "flags": 1, "matrix": [8, 2], "x": 84, "y": 57 },
{ "flags": 1, "matrix": [9, 2], "x": 102, "y": 57 },
{ "flags": 1, "matrix": [9, 3], "x": 140, "y": 57 },
{ "flags": 1, "matrix": [8, 4], "x": 159, "y": 57 },
{ "flags": 1, "matrix": [9, 4], "x": 177, "y": 57 },
{ "flags": 1, "matrix": [8, 5], "x": 196, "y": 57 },
{ "flags": 1, "matrix": [9, 5], "x": 215, "y": 57 },
{ "flags": 1, "matrix": [8, 3], "x": 121, "y": 57 }
]
},
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
{ "matrix": [0, 6], "x": 11, "y": 0 },
{ "matrix": [0, 0], "x": 0, "y": 1 },
{ "matrix": [1, 0], "x": 1, "y": 1 },
{ "matrix": [0, 1], "x": 2, "y": 1 },
{ "matrix": [1, 1], "x": 3, "y": 1 },
{ "matrix": [0, 2], "x": 4, "y": 1 },
{ "matrix": [1, 2], "x": 5, "y": 1 },
{ "matrix": [0, 3], "x": 6, "y": 1 },
{ "matrix": [1, 3], "x": 7, "y": 1 },
{ "matrix": [0, 4], "x": 8, "y": 1 },
{ "matrix": [1, 4], "x": 9, "y": 1 },
{ "matrix": [0, 5], "x": 10, "y": 1 },
{ "matrix": [1, 5], "x": 11, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [3, 0], "x": 1, "y": 2 },
{ "matrix": [2, 1], "x": 2, "y": 2 },
{ "matrix": [3, 1], "x": 3, "y": 2 },
{ "matrix": [2, 2], "x": 4, "y": 2 },
{ "matrix": [3, 2], "x": 5, "y": 2 },
{ "matrix": [2, 3], "x": 6, "y": 2 },
{ "matrix": [3, 3], "x": 7, "y": 2 },
{ "matrix": [2, 4], "x": 8, "y": 2 },
{ "matrix": [3, 4], "x": 9, "y": 2 },
{ "matrix": [2, 5], "x": 10, "y": 2 },
{ "matrix": [3, 5], "x": 11, "y": 2 },
{ "matrix": [4, 0], "x": 0, "y": 3 },
{ "matrix": [5, 0], "x": 1, "y": 3 },
{ "matrix": [4, 1], "x": 2, "y": 3 },
{ "matrix": [5, 1], "x": 3, "y": 3 },
{ "matrix": [4, 2], "x": 4, "y": 3 },
{ "matrix": [5, 2], "x": 5, "y": 3 },
{ "matrix": [4, 3], "x": 6, "y": 3 },
{ "matrix": [5, 3], "x": 7, "y": 3 },
{ "matrix": [4, 4], "x": 8, "y": 3 },
{ "matrix": [5, 4], "x": 9, "y": 3 },
{ "matrix": [4, 5], "x": 10, "y": 3 },
{ "matrix": [5, 5], "x": 11, "y": 3 },
{ "matrix": [6, 0], "x": 0, "y": 4 },
{ "matrix": [7, 0], "x": 1, "y": 4 },
{ "matrix": [6, 1], "x": 2, "y": 4 },
{ "matrix": [7, 1], "x": 3, "y": 4 },
{ "matrix": [6, 2], "x": 4, "y": 4 },
{ "matrix": [7, 2], "x": 5, "y": 4 },
{ "matrix": [6, 3], "x": 6, "y": 4 },
{ "matrix": [7, 3], "x": 7, "y": 4 },
{ "matrix": [6, 4], "x": 8, "y": 4 },
{ "matrix": [7, 4], "x": 9, "y": 4 },
{ "matrix": [6, 5], "x": 10, "y": 4 },
{ "matrix": [7, 5], "x": 11, "y": 4 },
{ "matrix": [8, 0], "x": 0, "y": 5 },
{ "matrix": [9, 0], "x": 1, "y": 5 },
{ "matrix": [8, 1], "x": 2, "y": 5 },
{ "matrix": [9, 1], "x": 3, "y": 5 },
{ "matrix": [8, 2], "x": 4, "y": 5 },
{ "matrix": [9, 2], "x": 5, "y": 5 },
{ "matrix": [8, 3], "x": 6, "y": 5 },
{ "matrix": [9, 3], "x": 7, "y": 5 },
{ "matrix": [8, 4], "x": 8, "y": 5 },
{ "matrix": [9, 4], "x": 9, "y": 5 },
{ "matrix": [8, 5], "x": 10, "y": 5 },
{ "matrix": [9, 5], "x": 11, "y": 5 }
]
}
}
}

View File

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

View File

@@ -0,0 +1,42 @@
{
"keyboard_name": "pi50",
"manufacturer": "1upkeyboards",
"maintainer": "ziptyze",
"processor": "RP2040",
"bootloader": "rp2040",
"board": "GENERIC_RP_RP2040",
"usb": {
"vid": "0x6F75",
"pid": "0x5606",
"device_version": "1.0.0"
},
"diode_direction": "COL2ROW",
"dynamic_keymap": {
"layer_count": 10
},
"features": {
"audio": false,
"backlight": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": false,
"rgb_matrix": true,
"rgblight": false
},
"matrix_pins": {
"rows": ["GP20", "GP15", "GP19", "GP14", "GP18", "GP13", "GP17", "GP12", "GP16", "GP21"],
"cols": ["GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP9"]
},
"encoder": {
"enabled": true,
"rotary": [
{"pin_a": "GP8", "pin_b": "GP7"}
]
},
"rgb_matrix": {
"driver": "WS2812"
}
}

View File

@@ -0,0 +1,136 @@
/* Copyright 2023 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
enum layer_names {
_ONE = 0,
_TWO,
_THREE,
_FOUR
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ╱⎺⎺⎺⎺╲
* |RGBTOG|
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_ONE] = LAYOUT_ortho_5x12 (
RGB_TOG,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_TWO] = LAYOUT_ortho_5x12 (
KC_MUTE,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | Pg Up| Pg Dn| |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_THREE] = LAYOUT_ortho_5x12 (
KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
* ╱⎺⎺⎺⎺╲
* | MUTE |
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Reset| Debug| | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | |Aud cy|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FOUR] = LAYOUT_ortho_5x12 (
KC_MUTE,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
_______, QK_BOOT, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, MU_NEXT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_ONE] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
[_TWO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_THREE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FOUR] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
};
#endif

View File

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

View File

@@ -0,0 +1,286 @@
/* Copyright 2023 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
enum layer_names {
_ONE = 0,
_TWO,
_THREE,
_FOUR,
_FIVE,
_SIX,
_SEVEN,
_EIGHT,
_NINE,
_TEN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ╱⎺⎺⎺⎺╲
* |RGBTOG|
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_ONE] = LAYOUT_ortho_5x12 (
RGB_TOG,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_TWO] = LAYOUT_ortho_5x12 (
KC_MUTE,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | Pg Up| Pg Dn| |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_THREE] = LAYOUT_ortho_5x12 (
KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
* ╱⎺⎺⎺⎺╲
* | MUTE |
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Reset| Debug| | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | |Aud cy|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FOUR] = LAYOUT_ortho_5x12 (
KC_MUTE,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
_______, QK_BOOT, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, MU_NEXT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FIVE] = LAYOUT_ortho_5x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_SIX] = LAYOUT_ortho_5x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_SEVEN] = LAYOUT_ortho_5x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_EIGHT] = LAYOUT_ortho_5x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_NINE] = LAYOUT_ortho_5x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_TEN] = LAYOUT_ortho_5x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_ONE] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
[_TWO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_THREE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FOUR] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FIVE] = { ENCODER_CCW_CW(_______, _______) },
[_SIX] = { ENCODER_CCW_CW(_______, _______) },
[_SEVEN] = { ENCODER_CCW_CW(_______, _______) },
[_EIGHT] = { ENCODER_CCW_CW(_______, _______) },
[_NINE] = { ENCODER_CCW_CW(_______, _______) },
[_TEN] = { ENCODER_CCW_CW(_______, _______) },
};
#endif

View File

@@ -0,0 +1,4 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@@ -0,0 +1,231 @@
// Copyright 2022 @filterpaper
// SPDX-License-Identifier: GPL-2.0+
#include "progmem.h"
static const unsigned char PROGMEM font[] = {
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, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE0, 0x18, 0x02,
0x00, 0x3C, 0x1E, 0x06, 0x0E, 0x0A,
0x1A, 0x0E, 0x26, 0xFF, 0xBF, 0x0D,
0x00, 0x80, 0x80, 0x81, 0xFF, 0xFE,
0xF8, 0x01, 0x01, 0x03, 0x03, 0x03,
0x03, 0x05, 0x05, 0x02, 0x02, 0x0A,
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
0x0C, 0x04, 0x10, 0x18, 0x20, 0xC0,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xD0, 0x58, 0x78,
0x68, 0x2C, 0x24, 0x34, 0xF4, 0xF4,
0x3C, 0x3C, 0xFC, 0xF8, 0xF8, 0x70,
0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0x7C, 0x07, 0x80, 0xE0,
0x60, 0x64, 0xE2, 0x60, 0x10, 0x10,
0x20, 0x22, 0x12, 0x17, 0x3F, 0x0B,
0x01, 0x01, 0x01, 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, 0x21,
0x6F, 0xFC, 0xE0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
0x60, 0x60, 0x70, 0x70, 0xF0, 0xF0,
0xD0, 0xD0, 0xD0, 0xD0, 0x50, 0x50,
0x50, 0x70, 0x78, 0x78, 0x78, 0x7C,
0x7F, 0x7D, 0x7C, 0x5E, 0x4F, 0x44,
0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
0x00, 0x38, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x58, 0x46, 0x47, 0x41,
0x41, 0x01, 0x01, 0x03, 0x03, 0x42,
0x42, 0x42, 0x46, 0x46, 0x46, 0x46,
0x42, 0x43, 0x43, 0x73, 0x77, 0x72,
0x70, 0x60, 0x60, 0x60, 0x60, 0x60,
0x60, 0x61, 0x67, 0x6F, 0x7E, 0x78,
0x78, 0x70, 0x70, 0x70, 0x70, 0x70,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
0x40, 0x40, 0x40, 0x48, 0x58, 0x58,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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

@@ -0,0 +1,10 @@
// Copyright 2023 ziptyze
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef RP_I2C_USE_I2C0
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C0 FALSE
#define RP_I2C_USE_I2C1 TRUE

View File

@@ -0,0 +1,4 @@
// Copyright 2023 ziptyze (@ziptyze)
// SPDX-License-Identifier: GPL-2.0-or-later
#define RGB_MATRIX_LED_COUNT 59

View File

@@ -0,0 +1,141 @@
{
"rgb_matrix": {
"layout": [
{ "flags": 1, "matrix": [0, 0], "x": 10, "y": 7 },
{ "flags": 4, "matrix": [1, 0], "x": 28, "y": 7 },
{ "flags": 4, "matrix": [0, 1], "x": 46, "y": 7 },
{ "flags": 4, "matrix": [1, 1], "x": 65, "y": 7 },
{ "flags": 4, "matrix": [0, 2], "x": 84, "y": 7 },
{ "flags": 4, "matrix": [1, 2], "x": 102, "y": 7 },
{ "flags": 4, "matrix": [0, 3], "x": 121, "y": 7 },
{ "flags": 4, "matrix": [1, 3], "x": 140, "y": 7 },
{ "flags": 4, "matrix": [0, 4], "x": 159, "y": 7 },
{ "flags": 4, "matrix": [1, 4], "x": 177, "y": 7 },
{ "flags": 4, "matrix": [0, 5], "x": 196, "y": 7 },
{ "flags": 1, "matrix": [1, 5], "x": 215, "y": 7 },
{ "flags": 1, "matrix": [3, 5], "x": 215, "y": 19 },
{ "flags": 4, "matrix": [2, 5], "x": 196, "y": 19 },
{ "flags": 4, "matrix": [3, 4], "x": 177, "y": 19 },
{ "flags": 4, "matrix": [2, 4], "x": 159, "y": 19 },
{ "flags": 4, "matrix": [3, 3], "x": 140, "y": 19 },
{ "flags": 4, "matrix": [2, 3], "x": 121, "y": 19 },
{ "flags": 4, "matrix": [3, 2], "x": 102, "y": 19 },
{ "flags": 4, "matrix": [2, 2], "x": 84, "y": 19 },
{ "flags": 4, "matrix": [3, 1], "x": 65, "y": 19 },
{ "flags": 4, "matrix": [2, 1], "x": 46, "y": 19 },
{ "flags": 4, "matrix": [3, 0], "x": 28, "y": 19 },
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 19 },
{ "flags": 1, "matrix": [4, 0], "x": 9, "y": 32 },
{ "flags": 4, "matrix": [5, 0], "x": 28, "y": 32 },
{ "flags": 4, "matrix": [4, 1], "x": 46, "y": 32 },
{ "flags": 4, "matrix": [5, 1], "x": 65, "y": 32 },
{ "flags": 4, "matrix": [4, 2], "x": 84, "y": 32 },
{ "flags": 4, "matrix": [5, 2], "x": 102, "y": 32 },
{ "flags": 4, "matrix": [4, 3], "x": 121, "y": 32 },
{ "flags": 4, "matrix": [5, 3], "x": 140, "y": 32 },
{ "flags": 4, "matrix": [4, 4], "x": 159, "y": 32 },
{ "flags": 4, "matrix": [5, 4], "x": 177, "y": 32 },
{ "flags": 4, "matrix": [4, 5], "x": 196, "y": 32 },
{ "flags": 1, "matrix": [5, 5], "x": 215, "y": 32 },
{ "flags": 1, "matrix": [7, 5], "x": 215, "y": 45 },
{ "flags": 4, "matrix": [6, 5], "x": 196, "y": 45 },
{ "flags": 4, "matrix": [7, 4], "x": 177, "y": 45 },
{ "flags": 4, "matrix": [6, 4], "x": 159, "y": 45 },
{ "flags": 4, "matrix": [7, 3], "x": 140, "y": 45 },
{ "flags": 4, "matrix": [6, 3], "x": 121, "y": 45 },
{ "flags": 4, "matrix": [7, 2], "x": 102, "y": 45 },
{ "flags": 4, "matrix": [6, 2], "x": 84, "y": 45 },
{ "flags": 4, "matrix": [7, 1], "x": 65, "y": 45 },
{ "flags": 4, "matrix": [6, 1], "x": 46, "y": 45 },
{ "flags": 4, "matrix": [7, 0], "x": 28, "y": 45 },
{ "flags": 4, "matrix": [6, 0], "x": 9, "y": 45 },
{ "flags": 1, "matrix": [8, 0], "x": 9, "y": 57 },
{ "flags": 1, "matrix": [9, 0], "x": 28, "y": 57 },
{ "flags": 1, "matrix": [8, 1], "x": 46, "y": 57 },
{ "flags": 1, "matrix": [9, 1], "x": 65, "y": 57 },
{ "flags": 1, "matrix": [8, 2], "x": 84, "y": 57 },
{ "flags": 1, "matrix": [9, 2], "x": 112, "y": 57 },
{ "flags": 1, "matrix": [9, 3], "x": 140, "y": 57 },
{ "flags": 1, "matrix": [8, 4], "x": 159, "y": 57 },
{ "flags": 1, "matrix": [9, 4], "x": 177, "y": 57 },
{ "flags": 1, "matrix": [8, 5], "x": 196, "y": 57 },
{ "flags": 1, "matrix": [9, 5], "x": 215, "y": 57 }
]
},
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
{ "matrix": [0, 6], "x": 11, "y": 0 },
{ "matrix": [0, 0], "x": 0, "y": 1 },
{ "matrix": [1, 0], "x": 1, "y": 1 },
{ "matrix": [0, 1], "x": 2, "y": 1 },
{ "matrix": [1, 1], "x": 3, "y": 1 },
{ "matrix": [0, 2], "x": 4, "y": 1 },
{ "matrix": [1, 2], "x": 5, "y": 1 },
{ "matrix": [0, 3], "x": 6, "y": 1 },
{ "matrix": [1, 3], "x": 7, "y": 1 },
{ "matrix": [0, 4], "x": 8, "y": 1 },
{ "matrix": [1, 4], "x": 9, "y": 1 },
{ "matrix": [0, 5], "x": 10, "y": 1 },
{ "matrix": [1, 5], "x": 11, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [3, 0], "x": 1, "y": 2 },
{ "matrix": [2, 1], "x": 2, "y": 2 },
{ "matrix": [3, 1], "x": 3, "y": 2 },
{ "matrix": [2, 2], "x": 4, "y": 2 },
{ "matrix": [3, 2], "x": 5, "y": 2 },
{ "matrix": [2, 3], "x": 6, "y": 2 },
{ "matrix": [3, 3], "x": 7, "y": 2 },
{ "matrix": [2, 4], "x": 8, "y": 2 },
{ "matrix": [3, 4], "x": 9, "y": 2 },
{ "matrix": [2, 5], "x": 10, "y": 2 },
{ "matrix": [3, 5], "x": 11, "y": 2 },
{ "matrix": [4, 0], "x": 0, "y": 3 },
{ "matrix": [5, 0], "x": 1, "y": 3 },
{ "matrix": [4, 1], "x": 2, "y": 3 },
{ "matrix": [5, 1], "x": 3, "y": 3 },
{ "matrix": [4, 2], "x": 4, "y": 3 },
{ "matrix": [5, 2], "x": 5, "y": 3 },
{ "matrix": [4, 3], "x": 6, "y": 3 },
{ "matrix": [5, 3], "x": 7, "y": 3 },
{ "matrix": [4, 4], "x": 8, "y": 3 },
{ "matrix": [5, 4], "x": 9, "y": 3 },
{ "matrix": [4, 5], "x": 10, "y": 3 },
{ "matrix": [5, 5], "x": 11, "y": 3 },
{ "matrix": [6, 0], "x": 0, "y": 4 },
{ "matrix": [7, 0], "x": 1, "y": 4 },
{ "matrix": [6, 1], "x": 2, "y": 4 },
{ "matrix": [7, 1], "x": 3, "y": 4 },
{ "matrix": [6, 2], "x": 4, "y": 4 },
{ "matrix": [7, 2], "x": 5, "y": 4 },
{ "matrix": [6, 3], "x": 6, "y": 4 },
{ "matrix": [7, 3], "x": 7, "y": 4 },
{ "matrix": [6, 4], "x": 8, "y": 4 },
{ "matrix": [7, 4], "x": 9, "y": 4 },
{ "matrix": [6, 5], "x": 10, "y": 4 },
{ "matrix": [7, 5], "x": 11, "y": 4 },
{ "matrix": [8, 0], "x": 0, "y": 5 },
{ "matrix": [9, 0], "x": 1, "y": 5 },
{ "matrix": [8, 1], "x": 2, "y": 5 },
{ "matrix": [9, 1], "x": 3, "y": 5 },
{ "matrix": [8, 2], "x": 4, "y": 5 },
{ "matrix": [9, 2], "x": 5, "y": 5 },
{ "matrix": [8, 3], "x": 6, "y": 5 },
{ "matrix": [9, 3], "x": 7, "y": 5 },
{ "matrix": [8, 4], "x": 8, "y": 5 },
{ "matrix": [9, 4], "x": 9, "y": 5 },
{ "matrix": [8, 5], "x": 10, "y": 5 },
{ "matrix": [9, 5], "x": 11, "y": 5 }
]
}
}
}

View File

View File

@@ -0,0 +1,242 @@
/* Copyright 2023 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 "quantum.h"
#include <ctype.h>
#include <stdio.h>
#if defined(RGB_MATRIX_EFFECT)
# undef RGB_MATRIX_EFFECT
#endif // defined(RGB_MATRIX_EFFECT)
#define RGB_MATRIX_EFFECT(x) RGB_MATRIX_EFFECT_##x,
enum {
RGB_MATRIX_EFFECT_NONE,
#include "rgb_matrix_effects.inc"
#undef RGB_MATRIX_EFFECT
#ifdef RGB_MATRIX_CUSTOM_KB
# include "rgb_matrix_kb.inc"
#endif
#ifdef RGB_MATRIX_CUSTOM_USER
# include "rgb_matrix_user.inc"
#endif
};
#define RGB_MATRIX_EFFECT(x) \
case RGB_MATRIX_EFFECT_##x: \
return #x;
const char* rgb_matrix_name(uint8_t effect) {
switch (effect) {
case RGB_MATRIX_EFFECT_NONE:
return "NONE";
#include "rgb_matrix_effects.inc"
#undef RGB_MATRIX_EFFECT
#ifdef RGB_MATRIX_CUSTOM_KB
# include "rgb_matrix_kb.inc"
#endif
#ifdef RGB_MATRIX_CUSTOM_USER
# include "rgb_matrix_user.inc"
#endif
default:
return "UNKNOWN";
}
}
#ifdef OLED_ENABLE
static uint32_t oled_logo_timer = 0;
static bool clear_logo = true;
static const char PROGMEM my_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f,
0x0f, 0x0f, 0x0f, 0x1f, 0xff, 0xff, 0xff, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xfb,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff,
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#endif
#ifdef OLED_ENABLE
void init_timer(void){
oled_logo_timer = timer_read32();
};
void user_oled_magic(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case 0:
oled_write_P(PSTR("One\n"), false);
break;
case 1:
oled_write_P(PSTR("Two\n"), false);
break;
case 2:
oled_write_P(PSTR("Three\n"), false);
break;
case 3:
oled_write_P(PSTR("Four\n"), false);
break;
case 4:
oled_write_P(PSTR("Five\n"), false);
break;
case 5:
oled_write_P(PSTR("Six\n"), false);
break;
case 6:
oled_write_P(PSTR("Seven\n"), false);
break;
case 7:
oled_write_P(PSTR("Eight\n"), false);
break;
case 8:
oled_write_P(PSTR("Nine\n"), false);
break;
case 9:
oled_write_P(PSTR("Ten\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("Undefined"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.caps_lock ? PSTR("Cap(x) ") : PSTR("Cap( ) "), false);
oled_write_P(led_state.num_lock ? PSTR("Num(x) ") : PSTR("Num( ) "), false);
oled_write_P(led_state.scroll_lock ? PSTR("Scrl(x)") : PSTR("Scrl( )"), false);
char *mode_name = strdup(rgb_matrix_name(rgb_matrix_get_mode()));
if (mode_name != NULL) {
int len = strlen(mode_name);
bool capitalize_next = true;
for (int i = 0; i < len; i++) {
if (i == 21 && mode_name[i] == '_') {
continue; // Skip the underscore if it's the 22nd character
}
if (mode_name[i] == '_') {
mode_name[i] = ' ';
capitalize_next = true;
} else if (capitalize_next) {
mode_name[i] = mode_name[i] >= 'a' && mode_name[i] <= 'z' ? mode_name[i] - 'a' + 'A' : mode_name[i];
capitalize_next = false;
} else {
mode_name[i] = mode_name[i] >= 'A' && mode_name[i] <= 'Z' ? mode_name[i] - 'A' + 'a' : mode_name[i];
}
}
// Add line break and spaces if necessary
if (len < 19) {
strcat(mode_name, "\n");
for (int i = 0; i < 21; i++) {
strcat(mode_name, " ");
}
} else {
// Find the most recent ' ' before the 21st character and replace it with a line break
int break_pos = -1;
for (int i = 18; i >= 0; i--) {
if (mode_name[i] == ' ') {
break_pos = i;
break;
}
}
if (break_pos >= 0) {
mode_name[break_pos] = '\n';
for (int i = 0; i < (21 - (len - break_pos - 1)); i++) {
strcat(mode_name, " ");
}
} else {
// No '_' found, just add spaces
for (int i = 0; i < (21 - len); i++) {
strcat(mode_name, " ");
}
}
}
oled_write_P(PSTR(mode_name), false);
free(mode_name);
}
}
void render_logo(void) {
oled_write_raw_P(my_logo, sizeof(my_logo));
}
void clear_screen(void) {
if (clear_logo){
for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) {
for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) {
oled_write_raw_byte(0x0, i*OLED_DISPLAY_WIDTH + j);
}
}
clear_logo = false;
}
}
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}
void keyboard_post_init_kb(void) {
init_timer();
keyboard_post_init_user();
}
# define SHOW_LOGO 5000
bool oled_task_kb(void) {
if (!oled_task_user()) { return false; }
if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){
render_logo();
}else{
clear_screen();
user_oled_magic();
}
return false;
}
#endif

View File

@@ -0,0 +1,36 @@
# pi50
The pi40 is a 5x12 ortholinear keyboard with options for a 1u or 2u spacebar using a Raspberry Pi Pico for the controller.
It includes options for a rotary encoder, SSD1306 oled, and per-key in-switch RGB LEDs.
All unused GPIO pins are broken out on the main pcb, as well as the available voltage pins.
This firmware also includes the option for VIA which includes configuration options for the rotary encoder, matrix lighting, and up to 10 layers.
Default oled configuration displays:
- current layer
- caps lock status
- num lock status
- scroll lock status
- current RGB lighting mode
* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze)
* Hardware Availability: (https://1upkeyboards.com/shop/keyboard-kits/diy-40-kits/pi50-keyboard-kit/#pcb-color)
Make example for this keyboard (after setting up your build environment):
make 1upkeyboards/pi50:default
Flashing example for this keyboard:
make 1upkeyboards/pi50:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 2 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix, the top left key, and plug in the keyboard
* **BOOTSEL button**: Hold down the BOOTSEL button on the pico, and plug in the keyboard

View File

@@ -0,0 +1,5 @@
WS2812_DRIVER = vendor
OLED_ENABLE = yes
DEFAULT_FOLDER = 1upkeyboards/pi50/grid

View File

@@ -0,0 +1,22 @@
# 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 @@
CONVERT_TO = kb2040

View File

@@ -1,6 +1,6 @@
# Gherkin
![Gherkin](https://4.bp.blogspot.com/-sQ18-lNZXOc/WCzlTde-4PI/AAAAAAAB_JQ/qQrehAMG6DMKf3i4oj4mkmLGOfTUvb3KgCLcB/s640/IMG_20161116_122926.jpg)
![Gherkin](https://i.imgur.com/XrqqtTq.jpg)
===
A 30 key keyboard.

View File

@@ -0,0 +1,155 @@
{
"manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444"
},
"community_layouts": [
"60_iso_tsangan"
],
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25},
{"label": "1", "matrix": [0, 1], "x": 1.25, "y": 0},
{"label": "2", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "3", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "4", "matrix": [0, 4], "x": 4.25, "y": 0},
{"label": "5", "matrix": [0, 5], "x": 5.25, "y": 0},
{"label": "6", "matrix": [0, 6], "x": 6.25, "y": 0},
{"label": "7", "matrix": [0, 7], "x": 7.25, "y": 0},
{"label": "8", "matrix": [0, 8], "x": 8.25, "y": 0},
{"label": "9", "matrix": [0, 9], "x": 9.25, "y": 0},
{"label": "0", "matrix": [0, 10], "x": 10.25, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11.25, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12.25, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.25, "y": 0, "w": 1.75},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.75},
{"label": "Q", "matrix": [1, 1], "x": 1.75, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.75, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.75, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.75, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.75, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.75, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.75, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.75, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.75, "y": 1},
{"label": "[", "matrix": [1, 11], "x": 11.75, "y": 1},
{"label": "]", "matrix": [1, 12], "x": 12.75, "y": 1},
{"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 2},
{"label": "A", "matrix": [2, 1], "x": 2, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 3, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 5, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 6, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 7, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 8, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 9, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 10, "y": 2},
{"label": ";", "matrix": [2, 10], "x": 11, "y": 2},
{"label": "'", "matrix": [2, 11], "x": 12, "y": 2},
{"label": "#", "matrix": [2, 12], "x": 13, "y": 2},
{"label": "Enter", "matrix": [1, 13], "x": 14, "y": 1, "h": 2},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.5},
{"label": "\\", "matrix": [3, 1], "x": 1.5, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.5, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.5, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.5, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.5, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.5, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.5, "y": 3},
{"label": ",", "matrix": [3, 9], "x": 9.5, "y": 3},
{"label": ".", "matrix": [3, 10], "x": 10.5, "y": 3},
{"label": "/", "matrix": [3, 11], "x": 11.5, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.5, "y": 3, "w": 1.5},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 3], "x": 2.75, "y": 4, "w": 1.5},
{"label": "\u25bd", "matrix": [4, 4], "x": 4.25, "y": 4, "w": 2.75},
{"label": "Space", "matrix": [4, 5], "x": 7, "y": 4},
{"label": "\u25bd", "matrix": [4, 6], "x": 8, "y": 4, "w": 2.75},
{"label": "Alt", "matrix": [4, 8], "x": 10.75, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 11], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25},
{"label": "1", "matrix": [0, 1], "x": 1.25, "y": 0},
{"label": "2", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "3", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "4", "matrix": [0, 4], "x": 4.25, "y": 0},
{"label": "5", "matrix": [0, 5], "x": 5.25, "y": 0},
{"label": "6", "matrix": [0, 6], "x": 6.25, "y": 0},
{"label": "7", "matrix": [0, 7], "x": 7.25, "y": 0},
{"label": "8", "matrix": [0, 8], "x": 8.25, "y": 0},
{"label": "9", "matrix": [0, 9], "x": 9.25, "y": 0},
{"label": "0", "matrix": [0, 10], "x": 10.25, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11.25, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12.25, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.25, "y": 0, "w": 1.75},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.75},
{"label": "Q", "matrix": [1, 1], "x": 1.75, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.75, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.75, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.75, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.75, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.75, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.75, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.75, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.75, "y": 1},
{"label": "[", "matrix": [1, 11], "x": 11.75, "y": 1},
{"label": "]", "matrix": [1, 12], "x": 12.75, "y": 1},
{"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 2},
{"label": "A", "matrix": [2, 1], "x": 2, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 3, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 5, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 6, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 7, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 8, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 9, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 10, "y": 2},
{"label": ";", "matrix": [2, 10], "x": 11, "y": 2},
{"label": "'", "matrix": [2, 11], "x": 12, "y": 2},
{"label": "#", "matrix": [2, 12], "x": 13, "y": 2},
{"label": "Enter", "matrix": [1, 13], "x": 14, "y": 1, "h": 2},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.5},
{"label": "\\", "matrix": [3, 1], "x": 1.5, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.5, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.5, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.5, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.5, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.5, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.5, "y": 3},
{"label": ",", "matrix": [3, 9], "x": 9.5, "y": 3},
{"label": ".", "matrix": [3, 10], "x": 10.5, "y": 3},
{"label": "/", "matrix": [3, 11], "x": 11.5, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.5, "y": 3, "w": 2.5},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 3], "x": 2.75, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 5], "x": 4.25, "y": 4, "w": 6.5},
{"label": "Alt", "matrix": [4, 8], "x": 10.75, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 11], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}

View File

@@ -0,0 +1,33 @@
# Matrix Diagram for 4pplet AEKISO60 (Revs. A and B)
```
┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ ┌─────────┐
│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ │3c │ 2.75u RShift
├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤ └─────────┘
│40 │41 │43 │44 │45 │46 │48 │4a │4b │
└─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
┌─────┬────┬─────┬─────────────────────────┬─────┬────┬─────┐ ─┐
│40 │41 │43 │45 │48 │4a │4b │ ├─ Tsangan
└─────┴────┴─────┴─────────────────────────┴─────┴────┴─────┘ │
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ │
│40 │41 │43 │45 │48 │4a │4b │ │
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ ─┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│40 │ │43 │45 │48 │ │4b │ WKL
└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘
┌─────┬────┬─────┬─────────┬─────┬─────────┬─────┬────┬─────┐ ─┐
│40 │41 │43 │44 │45 │46 │48 │4a │4b │ ├─ same matrix as LAYOUT_all
└─────┴────┴─────┴─────────┴─────┴─────────┴─────┴────┴─────┘ │
┌─────┬────┬─────┬────────┬─────┬──────────┬─────┬────┬─────┐ │
│40 │41 │43 │44 │45 │46 │48 │4a │4b │ │
└─────┴────┴─────┴────────┴─────┴──────────┴─────┴────┴─────┘ │
┌─────┬────┬─────┬─────────┬────┬──────────┬─────┬────┬─────┐ │
│40 │41 │43 │44 │45 │46 │48 │4a │4b │ │
└─────┴────┴─────┴─────────┴────┴──────────┴─────┴────┴─────┘ ─┘
```

View File

@@ -1,10 +1,6 @@
{
"keyboard_name": "AEKISO60 Rev A",
"manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0001",
"device_version": "0.0.1"
},
@@ -13,79 +9,5 @@
"esc_output": "C4"
},
"processor": "atmega32u2",
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0, "w":1.25},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.25, "y":0},
{"x":6.25, "y":0},
{"x":7.25, "y":0},
{"x":8.25, "y":0},
{"x":9.25, "y":0},
{"x":10.25, "y":0},
{"x":11.25, "y":0},
{"x":12.25, "y":0},
{"x":13.25, "y":0, "w":1.75},
{"x":0, "y":1, "w":1.75},
{"x":1.75, "y":1},
{"x":2.75, "y":1},
{"x":3.75, "y":1},
{"x":4.75, "y":1},
{"x":5.75, "y":1},
{"x":6.75, "y":1},
{"x":7.75, "y":1},
{"x":8.75, "y":1},
{"x":9.75, "y":1},
{"x":10.75, "y":1},
{"x":11.75, "y":1},
{"x":12.75, "y":1},
{"x":0, "y":2, "w":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
{"x":14, "y":1, "h":2},
{"x":0, "y":3, "w":1.5},
{"x":1.5, "y":3},
{"x":2.5, "y":3},
{"x":3.5, "y":3},
{"x":4.5, "y":3},
{"x":5.5, "y":3},
{"x":6.5, "y":3},
{"x":7.5, "y":3},
{"x":8.5, "y":3},
{"x":9.5, "y":3},
{"x":10.5, "y":3},
{"x":11.5, "y":3},
{"x":12.5, "y":3, "w":1.5},
{"x":14, "y":3},
{"x":0, "y":4, "w":1.5},
{"x":1.5, "y":4, "w":1.25},
{"x":2.75, "y":4, "w":1.5},
{"x":4.25, "y":4, "w":2.75},
{"x":7, "y":4},
{"x":8, "y":4, "w":2.75},
{"x":10.75, "y":4, "w":1.5},
{"x":12.25, "y":4, "w":1.25},
{"x":13.5, "y":4, "w":1.5}
]
}
}
"bootloader": "atmel-dfu"
}

View File

@@ -1 +0,0 @@
#include "rev_a.h"

View File

@@ -1,31 +0,0 @@
#pragma once
#include "quantum.h"
/* LAYOUT_all
* ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
* ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
* │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
* ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
* │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
* ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤
* │40 │41 │43 │44 │45 │46 │48 │4a │4b │
* └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
*/
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
k40, k41, k43, k44, k45, k46, k48, k4a, k4b \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
{k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \
}

View File

@@ -1,10 +1,6 @@
{
"keyboard_name": "AEKISO60 Rev B",
"manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0011",
"device_version": "0.0.2"
},
@@ -12,79 +8,5 @@
"caps_lock": "A10"
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0, "w":1.25},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.25, "y":0},
{"x":6.25, "y":0},
{"x":7.25, "y":0},
{"x":8.25, "y":0},
{"x":9.25, "y":0},
{"x":10.25, "y":0},
{"x":11.25, "y":0},
{"x":12.25, "y":0},
{"x":13.25, "y":0, "w":1.75},
{"x":0, "y":1, "w":1.75},
{"x":1.75, "y":1},
{"x":2.75, "y":1},
{"x":3.75, "y":1},
{"x":4.75, "y":1},
{"x":5.75, "y":1},
{"x":6.75, "y":1},
{"x":7.75, "y":1},
{"x":8.75, "y":1},
{"x":9.75, "y":1},
{"x":10.75, "y":1},
{"x":11.75, "y":1},
{"x":12.75, "y":1},
{"x":0, "y":2, "w":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
{"x":14, "y":1, "h":2},
{"x":0, "y":3, "w":1.5},
{"x":1.5, "y":3},
{"x":2.5, "y":3},
{"x":3.5, "y":3},
{"x":4.5, "y":3},
{"x":5.5, "y":3},
{"x":6.5, "y":3},
{"x":7.5, "y":3},
{"x":8.5, "y":3},
{"x":9.5, "y":3},
{"x":10.5, "y":3},
{"x":11.5, "y":3},
{"x":12.5, "y":3, "w":1.5},
{"x":14, "y":3},
{"x":0, "y":4, "w":1.5},
{"x":1.5, "y":4, "w":1.25},
{"x":2.75, "y":4, "w":1.5},
{"x":4.25, "y":4, "w":2.75},
{"x":7, "y":4},
{"x":8, "y":4, "w":2.75},
{"x":10.75, "y":4, "w":1.5},
{"x":12.25, "y":4, "w":1.25},
{"x":13.5, "y":4, "w":1.5}
]
}
}
"bootloader": "stm32-dfu"
}

View File

@@ -1,48 +0,0 @@
/*
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* LAYOUT_all
* ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
* ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
* │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
* ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
* │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
* ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤
* │40 │41 │43 │44 │45 │46 │48 │4a │4b │
* └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
*/
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
k40, k41, k43, k44, k45, k46, k48, k4a, k4b \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
{k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \
}

View File

@@ -17,72 +17,148 @@
"layouts": {
"LAYOUT_all": {
"layout": [
{ "label": "Esc", "x": 0, "y": 0 },
{ "label": "!", "x": 1, "y": 0 },
{ "label": "@", "x": 2, "y": 0 },
{ "label": "#", "x": 3, "y": 0 },
{ "label": "$", "x": 4, "y": 0 },
{ "label": "%", "x": 5, "y": 0 },
{ "label": "^", "x": 6, "y": 0 },
{ "label": "&", "x": 7, "y": 0 },
{ "label": "*", "x": 8, "y": 0 },
{ "label": "(", "x": 9, "y": 0 },
{ "label": ")", "x": 10, "y": 0 },
{ "label": "_", "x": 11, "y": 0 },
{ "label": "+", "x": 12, "y": 0 },
{ "label": "|", "x": 13, "y": 0 },
{ "label": "~", "x": 14, "y": 0 },
{ "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
{ "label": "Q", "x": 1.5, "y": 1 },
{ "label": "W", "x": 2.5, "y": 1 },
{ "label": "E", "x": 3.5, "y": 1 },
{ "label": "R", "x": 4.5, "y": 1 },
{ "label": "T", "x": 5.5, "y": 1 },
{ "label": "Y", "x": 6.5, "y": 1 },
{ "label": "U", "x": 7.5, "y": 1 },
{ "label": "I", "x": 8.5, "y": 1 },
{ "label": "O", "x": 9.5, "y": 1 },
{ "label": "P", "x": 10.5, "y": 1 },
{ "label": "{", "x": 11.5, "y": 1 },
{ "label": "}", "x": 12.5, "y": 1 },
{ "label": "Backsp.", "x": 13.5, "y": 1, "w": 1.5 },
{ "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
{ "label": "A", "x": 1.75, "y": 2 },
{ "label": "S", "x": 2.75, "y": 2 },
{ "label": "D", "x": 3.75, "y": 2 },
{ "label": "F", "x": 4.75, "y": 2 },
{ "label": "G", "x": 5.75, "y": 2 },
{ "label": "H", "x": 6.75, "y": 2 },
{ "label": "J", "x": 7.75, "y": 2 },
{ "label": "K", "x": 8.75, "y": 2 },
{ "label": "L", "x": 9.75, "y": 2 },
{ "label": ":", "x": 10.75, "y": 2 },
{ "label": "\"", "x": 11.75, "y": 2 },
{ "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
{ "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
{ "label": "|", "x": 1.25, "y": 3 },
{ "label": "Z", "x": 2.25, "y": 3 },
{ "label": "X", "x": 3.25, "y": 3 },
{ "label": "C", "x": 4.25, "y": 3 },
{ "label": "V", "x": 5.25, "y": 3 },
{ "label": "B", "x": 6.25, "y": 3 },
{ "label": "N", "x": 7.25, "y": 3 },
{ "label": "M", "x": 8.25, "y": 3 },
{ "label": "<", "x": 9.25, "y": 3 },
{ "label": ">", "x": 10.25, "y": 3 },
{ "label": "?", "x": 11.25, "y": 3 },
{ "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "Fn", "x": 14, "y": 3, "w": 1 },
{ "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
{ "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
{ "label": "Space1", "x": 3.75, "y": 4, "w": 2.25 },
{ "label": "Space2", "x": 6, "y": 4, "w": 1.25 },
{ "label": "Space3", "x": 7.25, "y": 4, "w": 2.75 },
{ "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
{ "label": "Menu", "x": 11.25, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 12.5, "y": 4, "w": 1.25 },
{ "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 }
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space1", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 2.25},
{"label": "Space2", "matrix": [4, 4], "x": 6, "y": 4, "w": 1.25},
{"label": "Space3", "matrix": [4, 5], "x": 7.25, "y": 4, "w": 2.75},
{"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [4, 7], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 8], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 9], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space2", "matrix": [4, 4], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [4, 7], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 8], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 9], "x": 13.75, "y": 4, "w": 1.25}
]
}
}

View File

@@ -1,34 +0,0 @@
/*
Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
k40, k41, k43, k45, k47, k48, k4a, k4b, k4d, k4e \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d}, \
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e}, \
{k40, k41, k43, k45, k47, k48, k4a, k4b, k4d, k4e } \
}

View File

@@ -18,71 +18,287 @@
"layouts": {
"LAYOUT_all": {
"layout": [
{ "label": "Esc", "x": 0, "y": 0 },
{ "label": "!", "x": 1, "y": 0 },
{ "label": "@", "x": 2, "y": 0 },
{ "label": "#", "x": 3, "y": 0 },
{ "label": "$", "x": 4, "y": 0 },
{ "label": "%", "x": 5, "y": 0 },
{ "label": "^", "x": 6, "y": 0 },
{ "label": "&", "x": 7, "y": 0 },
{ "label": "*", "x": 8, "y": 0 },
{ "label": "(", "x": 9, "y": 0 },
{ "label": ")", "x": 10, "y": 0 },
{ "label": "_", "x": 11, "y": 0 },
{ "label": "+", "x": 12, "y": 0 },
{ "label": "|", "x": 13, "y": 0 },
{ "label": "~", "x": 14, "y": 0 },
{ "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
{ "label": "Q", "x": 1.5, "y": 1 },
{ "label": "W", "x": 2.5, "y": 1 },
{ "label": "E", "x": 3.5, "y": 1 },
{ "label": "R", "x": 4.5, "y": 1 },
{ "label": "T", "x": 5.5, "y": 1 },
{ "label": "Y", "x": 6.5, "y": 1 },
{ "label": "U", "x": 7.5, "y": 1 },
{ "label": "I", "x": 8.5, "y": 1 },
{ "label": "O", "x": 9.5, "y": 1 },
{ "label": "P", "x": 10.5, "y": 1 },
{ "label": "{", "x": 11.5, "y": 1 },
{ "label": "}", "x": 12.5, "y": 1 },
{ "label": "Backsp.", "x": 13.5, "y": 1, "w": 1.5 },
{ "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
{ "label": "A", "x": 1.75, "y": 2 },
{ "label": "S", "x": 2.75, "y": 2 },
{ "label": "D", "x": 3.75, "y": 2 },
{ "label": "F", "x": 4.75, "y": 2 },
{ "label": "G", "x": 5.75, "y": 2 },
{ "label": "H", "x": 6.75, "y": 2 },
{ "label": "J", "x": 7.75, "y": 2 },
{ "label": "K", "x": 8.75, "y": 2 },
{ "label": "L", "x": 9.75, "y": 2 },
{ "label": ":", "x": 10.75, "y": 2 },
{ "label": "\"", "x": 11.75, "y": 2 },
{ "label": "~", "x": 12.75, "y": 2},
{ "label": "Enter", "x": 13.75, "y": 2, "w": 1.25 },
{ "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
{ "label": "|", "x": 1.25, "y": 3 },
{ "label": "Z", "x": 2.25, "y": 3 },
{ "label": "X", "x": 3.25, "y": 3 },
{ "label": "C", "x": 4.25, "y": 3 },
{ "label": "V", "x": 5.25, "y": 3 },
{ "label": "B", "x": 6.25, "y": 3 },
{ "label": "N", "x": 7.25, "y": 3 },
{ "label": "M", "x": 8.25, "y": 3 },
{ "label": "<", "x": 9.25, "y": 3 },
{ "label": ">", "x": 10.25, "y": 3 },
{ "label": "?", "x": 11.25, "y": 3 },
{ "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "Fn", "x": 14, "y": 3, "w": 1 },
{ "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
{ "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
{ "label": "Space", "x": 3.75, "y": 4, "w": 6.25 },
{ "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
{ "label": "Menu", "x": 11.25, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 12.5, "y": 4, "w": 1.25 },
{ "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 }
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 2, "w": 1.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Alt", "matrix": [9, 0], "x": 1.5, "y": 4},
{"label": "GUI", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
{"label": "GUI", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [9, 5], "x": 12.5, "y": 4}
]
}
}

View File

@@ -0,0 +1,24 @@
# Matrix Diagram for 4pplet Eagle Viper REP Rev A
```
┌───────┐
2u Backspace │36? │
└───────┘
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │16 │36 │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐
│20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │56 │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐76 │ ISO Enter
│40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │76 │ │46 │ │
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘
│60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │96 │
├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
│80 │90 │91 │93 │94 │85 │95 │86 │
└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
┌────────┐ ┌──────────┐
│60 │ 2.25u LShift 2.75u RShift │66 │
└────────┘ └──────────┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│80 │90 │91 │93 │85 │95 │86 │ Tsangan/WKL/HHKB
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
```

View File

@@ -19,23 +19,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
void setLayerLed(layer_state_t state);
#define LAYOUT_all( \
k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k36, \
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k56,\
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k76,\
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k96,\
k80, k90, k91, k93, k94, k85, k95, k86 \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06}, \
{k10, k11, k12, k13, k14, k15, k16}, \
{k20, k21, k22, k23, k24, k25, k26}, \
{k30, k31, k32, k33, k34, k35, k36}, \
{k40, k41, k42, k43, k44, k45, k46}, \
{k50, k51, k52, k53, k54, k55, k56}, \
{k60, k61, k62, k63, k64, k65, k66}, \
{k70, k71, k72, k73, k74, k75, k76}, \
{k80, KC_NO, KC_NO, KC_NO, KC_NO, k85, k86}, \
{k90, k91, KC_NO, k93, k94, k95, k96} \
}

View File

@@ -1,27 +0,0 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
SC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, SC_RSPC, MO(2),
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_RALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTL),
[1] = LAYOUT_all(
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
SC_LSPO, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, SC_RSPC, MO(2),
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_RALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTL),
[2] = LAYOUT_all(
KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, _______,
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, KC_DEL,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, KC_PENT,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
DF(1), DF(0), _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, QK_BOOT )
};

View File

@@ -0,0 +1,39 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ | Ent│
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───| er │
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│ │
* ├────┬───|───┴┬──┴┬──┴───┴───┴───┴───┴┬──┴┬──┴┬──┴─┬───|────┤
* │Ctrl│GUI│None│Alt│ Space │Alt│GUI│None│App│Ctrl│
* └────┴───┴────┴───┴───────────────────┴───┴───┴────┴───┴────┘
*/
[0] = LAYOUT_canon(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_NO, KC_APP, KC_RCTL)
};

View File

@@ -1,18 +1,34 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO,
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)),
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO,
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)),
[1] = LAYOUT_all(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______ )
};
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};

View File

@@ -1,32 +1,48 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO,
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)),
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT,
KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO,
KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, MO(1)),
[1] = LAYOUT_all(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______ ),
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[2] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[3] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ )
};
};

View File

@@ -5,10 +5,25 @@ A 60% PCB with a ton of layout options for SMK and Alps switches
More info: https://geekhack.org/index.php?topic=103531.0
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
* Hardware Supported: Steezy60 Rev A
* Hardware Supported: Steezy60 Rev A and B
* Hardware Availability: https://4pplet.com/products/steezy60
Make example for this keyboard (after setting up your build environment):
make 4pplet/steezy60/rev_a:default
make 4pplet/steezy60/rev_b: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).
Flashing example for this keyboard:
make 4pplet/steezy60/rev_a:default:flash
make 4pplet/steezy60/rev_b:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down Escape and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB or short the reset header
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,96 +1,724 @@
{
"keyboard_name": "Steezy60 Rev A",
"manufacturer": "4pplet",
"url": "",
"url": "https://github.com/4pplet/steezy60",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0002",
"device_version": "0.0.1"
},
"qmk_lufa_bootloader": {
"esc_input": "C2",
"esc_output": "C4"
},
"processor": "atmega32u2",
"bootloader": "atmel-dfu",
"community_layouts": [
"60_ansi",
"60_ansi_split_bs_rshift",
"60_ansi_tsangan",
"60_hhkb",
"60_iso",
"60_iso_split_bs_rshift",
"60_iso_tsangan",
"60_tsangan_hhkb"
],
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["C4","C6","B7","B6","B5","B4","B3","B2","B1","D6","D5","D4","D2","D1"],
"rows": ["C2","D0","B0","C7","C5"]
},
"features": {
"audio": false,
"backlight": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": false,
"nkro": true,
"rgblight": true
},
"rgblight": {
"led_count": 12,
"pin": "D3",
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":13.5, "y":1, "w":1.5},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2},
{"x":13.75, "y":2, "w":1.25},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":5, "y":3},
{"x":6, "y":3},
{"x":7, "y":3},
{"x":8, "y":3},
{"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3},
{"x":13, "y":3},
{"x":14, "y":3},
{"x":0, "y":4},
{"x":1, "y":4},
{"x":2, "y":4},
{"x":3, "y":4},
{"x":4, "y":4, "w":2.25},
{"x":6.25, "y":4, "w":1.5},
{"x":7.75, "y":4, "w":2.25},
{"x":10, "y":4},
{"x":11, "y":4},
{"x":12, "y":4},
{"x":13, "y":4},
{"x":14, "y":4}
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11, "y": 3 },
{ "label": "Shift", "matrix": [3, 12], "x": 12, "y": 3 },
{ "label": "Up", "matrix": [3, 13], "x": 13, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1, "y": 4 },
{ "label": "None", "matrix": [4, 2], "x": 2, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 },
{ "label": "LSpace", "matrix": [4, 4], "w": 2.5, "x": 4, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 1.25, "x": 6.5, "y": 4 },
{ "label": "RSpace", "matrix": [4, 6], "w": 2.25, "x": 7.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 },
{ "label": "None", "matrix": [4, 9], "x": 12, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "x": 13, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 }
]
},
"LAYOUT_60_ansi": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_ansi_tsangan": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 }
]
},
"LAYOUT_60_hhkb": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }
]
},
"LAYOUT_60_iso": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_iso_split_bs_rshift": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 }
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 }
]
},
"LAYOUT_canon": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "nuhs", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Enter", "matrix": [4, 12], "w": 1.25, "h": 2, "x": 13.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.5, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 0], "x": 0, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 1], "x": 1, "y": 4 },
{ "label": "Win", "matrix": [4, 2], "x": 2, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 },
{ "label": "Menu", "matrix": [4, 9], "x": 12, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 10], "x": 13, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 }
]
}
}

View File

@@ -1 +0,0 @@
#include "rev_a.h"

View File

@@ -1,18 +0,0 @@
#pragma once
#include "quantum.h"
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4d, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,k4c, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
{k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d} \
}

View File

@@ -1,12 +1,4 @@
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
KEY_LOCK_ENABLE = yes

View File

@@ -0,0 +1,19 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define WS2812_EXTERNAL_PULLUP

View File

@@ -0,0 +1,725 @@
{
"keyboard_name": "Steezy60 Rev B",
"manufacturer": "4pplet",
"url": "https://github.com/4pplet/steezy60",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0013",
"device_version": "0.0.2"
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"community_layouts": [
"60_ansi",
"60_ansi_split_bs_rshift",
"60_ansi_tsangan",
"60_hhkb",
"60_iso",
"60_iso_split_bs_rshift",
"60_iso_tsangan",
"60_tsangan_hhkb"
],
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["A7","A5","A4","A3","A1","F1","F0","C15","C14","B9","B6","B5","B4","B3"],
"rows": ["B8","A15","C13","A2","A6"]
},
"features": {
"audio": false,
"backlight": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": false,
"nkro": true,
"rgblight": true
},
"rgblight": {
"led_count": 12,
"pin": "A8",
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"layouts": {
"LAYOUT_all": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11, "y": 3 },
{ "label": "Shift", "matrix": [3, 12], "x": 12, "y": 3 },
{ "label": "Up", "matrix": [3, 13], "x": 13, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1, "y": 4 },
{ "label": "None", "matrix": [4, 2], "x": 2, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 },
{ "label": "LSpace", "matrix": [4, 4], "w": 2.5, "x": 4, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 1.25, "x": 6.5, "y": 4 },
{ "label": "RSpace", "matrix": [4, 6], "w": 2.25, "x": 7.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 },
{ "label": "None", "matrix": [4, 9], "x": 12, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "x": 13, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 }
]
},
"LAYOUT_60_ansi": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_ansi_tsangan": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 }
]
},
"LAYOUT_60_hhkb": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }
]
},
"LAYOUT_60_iso": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_iso_split_bs_rshift": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 },
{ "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 }
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
{ "label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 }
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 },
{ "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
{ "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 },
{ "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 }
]
},
"LAYOUT_canon": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "!", "matrix": [0, 1], "x": 1, "y": 0 },
{ "label": "@", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "#", "matrix": [0, 3], "x": 3, "y": 0 },
{ "label": "$", "matrix": [0, 4], "x": 4, "y": 0 },
{ "label": "%", "matrix": [0, 5], "x": 5, "y": 0 },
{ "label": "^", "matrix": [0, 6], "x": 6, "y": 0 },
{ "label": "&", "matrix": [0, 7], "x": 7, "y": 0 },
{ "label": "*", "matrix": [0, 8], "x": 8, "y": 0 },
{ "label": "(", "matrix": [0, 9], "x": 9, "y": 0 },
{ "label": ")", "matrix": [0, 10], "x": 10, "y": 0 },
{ "label": "_", "matrix": [0, 11], "x": 11, "y": 0 },
{ "label": "+", "matrix": [0, 12], "x": 12, "y": 0 },
{ "label": "|", "matrix": [0, 13], "x": 13, "y": 0 },
{ "label": "~", "matrix": [4, 13], "x": 14, "y": 0 },
{ "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "label": "nuhs", "matrix": [2, 12], "x": 12.75, "y": 2 },
{ "label": "Enter", "matrix": [4, 12], "w": 1.25, "h": 2, "x": 13.75, "y": 2 },
{ "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
{ "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 },
{ "label": "Shift", "matrix": [3, 13], "w": 1.5, "x": 12.25, "y": 3 },
{ "label": "Fn", "matrix": [4, 0], "x": 0, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 1], "x": 1, "y": 4 },
{ "label": "Win", "matrix": [4, 2], "x": 2, "y": 4 },
{ "label": "Alt", "matrix": [4, 3], "x": 3, "y": 4 },
{ "label": "Space", "matrix": [4, 5], "w": 6, "x": 4, "y": 4 },
{ "label": "Alt", "matrix": [4, 7], "x": 10, "y": 4 },
{ "label": "Win", "matrix": [4, 8], "x": 11, "y": 4 },
{ "label": "Menu", "matrix": [4, 9], "x": 12, "y": 4 },
{ "label": "Ctrl", "matrix": [4, 10], "x": 13, "y": 4 },
{ "label": "Fn", "matrix": [4, 11], "x": 14, "y": 4 }
]
}
}
}

View File

@@ -0,0 +1,10 @@
# Build Options
# change yes to no to disable
#
KEY_LOCK_ENABLE = yes
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

View File

@@ -0,0 +1,34 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP),
// basic function layer
[1] = LAYOUT_all(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@@ -0,0 +1,40 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Delete│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴ │
* │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │
* ├────┬───│───┴┬──┴┬──┴───┴───┴───┴─┬─┴─┬─┴──┬┴───┴┬────┬───┤
* │Caps│Alt│Gui │ ` │ Space │ \ │Left│Right│Down│ Up│
* └────┴───┴────┴───┴────────────────┴───┴────┴─────┴────┴───┘
*/
[0] = LAYOUT_m0116(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_CAPS, KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP)
};

View File

@@ -0,0 +1,39 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backsp│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐Ent│
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───│───┤
* │Shft│ ` │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│ Up│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴┬──┴─┬─┴──┬┴────┬────┤
* │Ctrl│Alt │GUI │ Space │GUI │Left│Right│Down│
* └────┴────┴────┴──────────────────────┴────┴────┴─────┴────┘
*/
[0] = LAYOUT_m0118(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_LEFT, KC_RIGHT,KC_DOWN)
};

View File

@@ -0,0 +1,48 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP),
// basic function layer
[1] = LAYOUT_all(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// extra layer for VIA
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// extra layer for VIA
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@@ -0,0 +1,23 @@
# Unextended Standard PCB
PCB for the Unextended Standard Project. The PCB enables use of M0116, M0118, IIc and NeXT keycaps and is designed to fit in the open sourced Unextended case.
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
* Hardware Supported: [Unextended Standard PCB](https://github.com/4pplet/Unextended-Standard-PCB)
Make example for this keyboard (after setting up your build environment):
make 4pplet/unextended_std/rev_a:default
Flashing example for this keyboard:
make 4pplet/unextended_std/rev_a:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the Escape-key and plug in the keyboard
* **Physical reset header**: Briefly short the header labled "BL/reset" on the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -0,0 +1,19 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define WS2812_EXTERNAL_PULLUP

View File

@@ -0,0 +1,262 @@
{
"keyboard_name": "Unextended Standard Rev A",
"manufacturer": "4pplet",
"url": "https://github.com/4pplet/Unextended",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0012",
"device_version": "0.0.1"
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"matrix_pins": {
"rows":
["B14","B15","B6","B5","B4"],
"cols":
["B2","A4","A1","A2","F1","F0","C15","C14","C13","B9","B8","B7","B12","B3"]
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"backlight": false,
"rgblight": true,
"audio": false
},
"rgblight": {
"pin": "A8",
"led_count": 16,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"indicators": {
"caps_lock": "A10",
"on_state": 0
},
"layouts": {
"LAYOUT_all": {
"layout": [
{"label":"Esc", "matrix": [0, 0], "x":0, "y":0},
{"label":"!", "matrix": [0, 1], "x":1, "y":0},
{"label":"@", "matrix": [0, 2], "x":2, "y":0},
{"label":"#", "matrix": [0, 3], "x":3, "y":0},
{"label":"$", "matrix": [0, 4], "x":4, "y":0},
{"label":"%", "matrix": [0, 5], "x":5, "y":0},
{"label":"^", "matrix": [0, 6], "x":6, "y":0},
{"label":"&", "matrix": [0, 7], "x":7, "y":0},
{"label":"*", "matrix": [0, 8], "x":8, "y":0},
{"label":"(", "matrix": [0, 9], "x":9, "y":0},
{"label":")", "matrix": [0, 10], "x":10, "y":0},
{"label":"_", "matrix": [0, 11], "x":11, "y":0},
{"label":"+", "matrix": [0, 12], "x":12, "y":0},
{"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5},
{"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5},
{"label":"Q", "matrix": [1, 1], "x":1.5, "y":1},
{"label":"W", "matrix": [1, 2], "x":2.5, "y":1},
{"label":"E", "matrix": [1, 3], "x":3.5, "y":1},
{"label":"R", "matrix": [1, 4], "x":4.5, "y":1},
{"label":"T", "matrix": [1, 5], "x":5.5, "y":1},
{"label":"Y", "matrix": [1, 6], "x":6.5, "y":1},
{"label":"U", "matrix": [1, 7], "x":7.5, "y":1},
{"label":"I", "matrix": [1, 8], "x":8.5, "y":1},
{"label":"O", "matrix": [1, 9], "x":9.5, "y":1},
{"label":"P", "matrix": [1, 10], "x":10.5, "y":1},
{"label":"{", "matrix": [1, 11], "x":11.5, "y":1},
{"label":"}", "matrix": [1, 12], "x":12.5, "y":1},
{"label":"|", "matrix": [1, 13], "x":13.5, "y":1},
{"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75},
{"label":"A", "matrix": [2, 1], "x":1.75, "y":2},
{"label":"S", "matrix": [2, 2], "x":2.75, "y":2},
{"label":"D", "matrix": [2, 3], "x":3.75, "y":2},
{"label":"F", "matrix": [2, 4], "x":4.75, "y":2},
{"label":"G", "matrix": [2, 5], "x":5.75, "y":2},
{"label":"H", "matrix": [2, 6], "x":6.75, "y":2},
{"label":"J", "matrix": [2, 7], "x":7.75, "y":2},
{"label":"K", "matrix": [2, 8], "x":8.75, "y":2},
{"label":"L", "matrix": [2, 9], "x":9.75, "y":2},
{"label":":", "matrix": [2, 10], "x":10.75, "y":2},
{"label":"\"", "matrix": [2, 11], "x":11.75, "y":2},
{"label":"nubs", "matrix": [3, 13], "x":12.75, "y":2},
{"label":"Enter", "matrix": [2, 13], "x":13.75, "y":2, "w":0.75},
{"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25},
{"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3},
{"label":"Z", "matrix": [3, 2], "x":2.25, "y":3},
{"label":"X", "matrix": [3, 3], "x":3.25, "y":3},
{"label":"C", "matrix": [3, 4], "x":4.25, "y":3},
{"label":"V", "matrix": [3, 5], "x":5.25, "y":3},
{"label":"B", "matrix": [3, 6], "x":6.25, "y":3},
{"label":"N", "matrix": [3, 7], "x":7.25, "y":3},
{"label":"M", "matrix": [3, 8], "x":8.25, "y":3},
{"label":"<", "matrix": [3, 9], "x":9.25, "y":3},
{"label":">", "matrix": [3, 10], "x":10.25, "y":3},
{"label":"?", "matrix": [3, 11], "x":11.25, "y":3},
{"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25},
{"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3},
{"label":"Caps", "matrix": [4, 0], "x":0, "y":4},
{"label":"opt", "matrix": [4, 1], "x":1, "y":4},
{"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75},
{"label":"`", "matrix": [4, 3], "x":3.75, "y":4},
{"label":"Space", "matrix": [4, 6], "x":4.75, "y":4, "w":4.75},
{"label":"\\", "matrix": [4, 8], "x":9.5, "y":4},
{"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4},
{"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4},
{"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4},
{"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4}
]
},
"LAYOUT_m0116": {
"layout": [
{"label":"Esc", "matrix": [0, 0], "x":0, "y":0},
{"label":"!", "matrix": [0, 1], "x":1, "y":0},
{"label":"@", "matrix": [0, 2], "x":2, "y":0},
{"label":"#", "matrix": [0, 3], "x":3, "y":0},
{"label":"$", "matrix": [0, 4], "x":4, "y":0},
{"label":"%", "matrix": [0, 5], "x":5, "y":0},
{"label":"^", "matrix": [0, 6], "x":6, "y":0},
{"label":"&", "matrix": [0, 7], "x":7, "y":0},
{"label":"*", "matrix": [0, 8], "x":8, "y":0},
{"label":"(", "matrix": [0, 9], "x":9, "y":0},
{"label":")", "matrix": [0, 10], "x":10, "y":0},
{"label":"_", "matrix": [0, 11], "x":11, "y":0},
{"label":"+", "matrix": [0, 12], "x":12, "y":0},
{"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5},
{"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5},
{"label":"Q", "matrix": [1, 1], "x":1.5, "y":1},
{"label":"W", "matrix": [1, 2], "x":2.5, "y":1},
{"label":"E", "matrix": [1, 3], "x":3.5, "y":1},
{"label":"R", "matrix": [1, 4], "x":4.5, "y":1},
{"label":"T", "matrix": [1, 5], "x":5.5, "y":1},
{"label":"Y", "matrix": [1, 6], "x":6.5, "y":1},
{"label":"U", "matrix": [1, 7], "x":7.5, "y":1},
{"label":"I", "matrix": [1, 8], "x":8.5, "y":1},
{"label":"O", "matrix": [1, 9], "x":9.5, "y":1},
{"label":"P", "matrix": [1, 10], "x":10.5, "y":1},
{"label":"{", "matrix": [1, 11], "x":11.5, "y":1},
{"label":"}", "matrix": [1, 12], "x":12.5, "y":1},
{"label":"Enter", "matrix": [2, 13], "x":13.5, "y":1, "h":2},
{"label":"Control", "matrix": [2, 0], "x":0, "y":2, "w":1.75},
{"label":"A", "matrix": [2, 1], "x":1.75, "y":2},
{"label":"S", "matrix": [2, 2], "x":2.75, "y":2},
{"label":"D", "matrix": [2, 3], "x":3.75, "y":2},
{"label":"F", "matrix": [2, 4], "x":4.75, "y":2},
{"label":"G", "matrix": [2, 5], "x":5.75, "y":2},
{"label":"H", "matrix": [2, 6], "x":6.75, "y":2},
{"label":"J", "matrix": [2, 7], "x":7.75, "y":2},
{"label":"K", "matrix": [2, 8], "x":8.75, "y":2},
{"label":"L", "matrix": [2, 9], "x":9.75, "y":2},
{"label":":", "matrix": [2, 10], "x":10.75, "y":2},
{"label":"\"", "matrix": [2, 11], "x":11.75, "y":2},
{"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":2.25},
{"label":"Z", "matrix": [3, 2], "x":2.25, "y":3},
{"label":"X", "matrix": [3, 3], "x":3.25, "y":3},
{"label":"C", "matrix": [3, 4], "x":4.25, "y":3},
{"label":"V", "matrix": [3, 5], "x":5.25, "y":3},
{"label":"B", "matrix": [3, 6], "x":6.25, "y":3},
{"label":"N", "matrix": [3, 7], "x":7.25, "y":3},
{"label":"M", "matrix": [3, 8], "x":8.25, "y":3},
{"label":"<", "matrix": [3, 9], "x":9.25, "y":3},
{"label":">", "matrix": [3, 10], "x":10.25, "y":3},
{"label":"?", "matrix": [3, 11], "x":11.25, "y":3},
{"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":2.25},
{"label":"Caps", "matrix": [4, 0], "x":0, "y":4},
{"label":"opt", "matrix": [4, 1], "x":1, "y":4},
{"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75},
{"label":"`", "matrix": [4, 3], "x":3.75, "y":4},
{"label":"Space", "matrix": [4, 6],"x":4.75, "y":4, "w":4.75},
{"label":"\\", "matrix": [4, 8], "x":9.5, "y":4},
{"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4},
{"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4},
{"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4},
{"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4}
]
},
"LAYOUT_m0118": {
"layout": [
{"label":"Esc", "matrix": [0, 0], "x":0, "y":0},
{"label":"!", "matrix": [0, 1], "x":1, "y":0},
{"label":"@", "matrix": [0, 2], "x":2, "y":0},
{"label":"#", "matrix": [0, 3], "x":3, "y":0},
{"label":"$", "matrix": [0, 4], "x":4, "y":0},
{"label":"%", "matrix": [0, 5], "x":5, "y":0},
{"label":"^", "matrix": [0, 6], "x":6, "y":0},
{"label":"&", "matrix": [0, 7], "x":7, "y":0},
{"label":"*", "matrix": [0, 8], "x":8, "y":0},
{"label":"(", "matrix": [0, 9], "x":9, "y":0},
{"label":")", "matrix": [0, 10], "x":10, "y":0},
{"label":"_", "matrix": [0, 11], "x":11, "y":0},
{"label":"+", "matrix": [0, 12], "x":12, "y":0},
{"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5},
{"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5},
{"label":"Q", "matrix": [1, 1], "x":1.5, "y":1},
{"label":"W", "matrix": [1, 2], "x":2.5, "y":1},
{"label":"E", "matrix": [1, 3], "x":3.5, "y":1},
{"label":"R", "matrix": [1, 4], "x":4.5, "y":1},
{"label":"T", "matrix": [1, 5], "x":5.5, "y":1},
{"label":"Y", "matrix": [1, 6], "x":6.5, "y":1},
{"label":"U", "matrix": [1, 7], "x":7.5, "y":1},
{"label":"I", "matrix": [1, 8], "x":8.5, "y":1},
{"label":"O", "matrix": [1, 9], "x":9.5, "y":1},
{"label":"P", "matrix": [1, 10], "x":10.5, "y":1},
{"label":"{", "matrix": [1, 11], "x":11.5, "y":1},
{"label":"}", "matrix": [1, 12], "x":12.5, "y":1},
{"label":"Enter", "matrix": [2, 13], "x":13.75, "y":1, "w":0.75, "h":2},
{"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75},
{"label":"A", "matrix": [2, 1], "x":1.75, "y":2},
{"label":"S", "matrix": [2, 2], "x":2.75, "y":2},
{"label":"D", "matrix": [2, 3], "x":3.75, "y":2},
{"label":"F", "matrix": [2, 4], "x":4.75, "y":2},
{"label":"G", "matrix": [2, 5], "x":5.75, "y":2},
{"label":"H", "matrix": [2, 6], "x":6.75, "y":2},
{"label":"J", "matrix": [2, 7], "x":7.75, "y":2},
{"label":"K", "matrix": [2, 8], "x":8.75, "y":2},
{"label":"L", "matrix": [2, 9], "x":9.75, "y":2},
{"label":":", "matrix": [2, 10], "x":10.75, "y":2},
{"label":"\"", "matrix": [2, 11], "x":11.75, "y":2},
{"label":"nuhs", "matrix": [3, 13], "x":12.75, "y":2},
{"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25},
{"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3},
{"label":"Z", "matrix": [3, 2], "x":2.25, "y":3},
{"label":"X", "matrix": [3, 3], "x":3.25, "y":3},
{"label":"C", "matrix": [3, 4], "x":4.25, "y":3},
{"label":"V", "matrix": [3, 5], "x":5.25, "y":3},
{"label":"B", "matrix": [3, 6], "x":6.25, "y":3},
{"label":"N", "matrix": [3, 7], "x":7.25, "y":3},
{"label":"M", "matrix": [3, 8], "x":8.25, "y":3},
{"label":"<", "matrix": [3, 9], "x":9.25, "y":3},
{"label":">", "matrix": [3, 10], "x":10.25, "y":3},
{"label":"?", "matrix": [3, 11], "x":11.25, "y":3},
{"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25},
{"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3},
{"label":"Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.25},
{"label":"Opt", "matrix": [4, 2], "x":1.25, "y":4, "w":1.5},
{"label":"Cmd", "matrix": [4, 3], "x":2.75, "y":4, "w":1.75},
{"label":"Space", "matrix": [4, 6], "x":4.5, "y":4, "w":5.25},
{"label":"Cmd", "matrix": [4, 9], "x":9.75, "y":4, "w":1.75},
{"label":"\u2190", "matrix": [4, 10], "x":11.5, "y":4},
{"label":"\u2192", "matrix": [4, 11], "x":12.5, "y":4},
{"label":"\u2193", "matrix": [4, 12], "x":13.5, "y":4}
]
}
}
}

View File

@@ -0,0 +1,10 @@
# Build Options
# change yes to no to disable
#
KEY_LOCK_ENABLE = yes
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

View File

@@ -1,22 +1,9 @@
/* Copyright 2018-2020
* ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
* David Philip Barr <@davidphilipbarr>
* Pierre Chevalier <pierrechevalier83@gmail.com>
* @filterpaper
*
* 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-2020
// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
// David Philip Barr <@davidphilipbarr>
// Pierre Chevalier <pierrechevalier83@gmail.com>
// SPDX-License-Identifier: GPL-2.0+
#include "quantum.h"
#ifdef SWAP_HANDS_ENABLE

View File

@@ -1,25 +1,9 @@
/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@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/>.
*/
// Copyright 2018-2020
// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
// David Philip Barr <@davidphilipbarr>
// Pierre Chevalier <pierrechevalier83@gmail.com>
// SPDX-License-Identifier: GPL-2.0+
#pragma once
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
#define EE_HANDS

View File

@@ -8,8 +8,13 @@
"pid": "0x3939",
"device_version": "0.0.1"
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"development_board": "promicro",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"unicode": true
},
"matrix_pins": {
"direct": [
["C6", "D2", "F7", "B2", "F4"],
@@ -19,6 +24,7 @@
]
},
"split": {
"enabled": true,
"soft_serial_pin": "D1",
"bootmagic": {
"matrix": [4, 4]
@@ -41,47 +47,43 @@
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
{"x": 0, "y": 1.33, "matrix": [0, 0]},
{"x": 1, "y": 0.31, "matrix": [0, 1]},
{"x": 2, "y": 0, "matrix": [0, 2]},
{"x": 3, "y": 0.28, "matrix": [0, 3]},
{"x": 4, "y": 0.42, "matrix": [0, 4]},
{ "label": "L01", "matrix": [0, 0], "x": 0, "y": 1.33 },
{ "label": "L02", "matrix": [0, 1], "x": 1, "y": 0.31 },
{ "label": "L03", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "L04", "matrix": [0, 3], "x": 3, "y": 0.28 },
{ "label": "L05", "matrix": [0, 4], "x": 4, "y": 0.42 },
{ "label": "R01", "matrix": [4, 0], "x": 8, "y": 0.42 },
{ "label": "R02", "matrix": [4, 1], "x": 9, "y": 0.28 },
{ "label": "R03", "matrix": [4, 2], "x": 10, "y": 0 },
{ "label": "R04", "matrix": [4, 3], "x": 11, "y": 0.31 },
{ "label": "R05", "matrix": [4, 4], "x": 12, "y": 1.33 },
{"x": 8, "y": 0.42, "matrix": [4, 0]},
{"x": 9, "y": 0.28, "matrix": [4, 1]},
{"x": 10, "y": 0, "matrix": [4, 2]},
{"x": 11, "y": 0.31, "matrix": [4, 3]},
{"x": 12, "y": 1.33, "matrix": [4, 4]},
{ "label": "L06", "matrix": [1, 0], "x": 0, "y": 2.33 },
{ "label": "L07", "matrix": [1, 1], "x": 1, "y": 1.31 },
{ "label": "L08", "matrix": [1, 2], "x": 2, "y": 1 },
{ "label": "L09", "matrix": [1, 3], "x": 3, "y": 1.28 },
{ "label": "L10", "matrix": [1, 4], "x": 4, "y": 1.42 },
{ "label": "R06", "matrix": [5, 0], "x": 8, "y": 1.42 },
{ "label": "R07", "matrix": [5, 1], "x": 9, "y": 1.28 },
{ "label": "R08", "matrix": [5, 2], "x": 10, "y": 1 },
{ "label": "R09", "matrix": [5, 3], "x": 11, "y": 1.31 },
{ "label": "R10", "matrix": [5, 4], "x": 12, "y": 2.33 },
{"x": 0, "y": 2.33, "matrix": [1, 0]},
{"x": 1, "y": 1.31, "matrix": [1, 1]},
{"x": 2, "y": 1, "matrix": [1, 2]},
{"x": 3, "y": 1.28, "matrix": [1, 3]},
{"x": 4, "y": 1.42, "matrix": [1, 4]},
{ "label": "L11", "matrix": [2, 0], "x": 0, "y": 3.33 },
{ "label": "L12", "matrix": [2, 1], "x": 1, "y": 2.31 },
{ "label": "L13", "matrix": [2, 2], "x": 2, "y": 2 },
{ "label": "L14", "matrix": [2, 3], "x": 3, "y": 2.28 },
{ "label": "L15", "matrix": [2, 4], "x": 4, "y": 2.42 },
{ "label": "R11", "matrix": [6, 0], "x": 8, "y": 2.42 },
{ "label": "R12", "matrix": [6, 1], "x": 9, "y": 2.28 },
{ "label": "R13", "matrix": [6, 2], "x": 10, "y": 2 },
{ "label": "R14", "matrix": [6, 3], "x": 11, "y": 2.31 },
{ "label": "R15", "matrix": [6, 4], "x": 12, "y": 3.33 },
{"x": 8, "y": 1.42, "matrix": [5, 0]},
{"x": 9, "y": 1.28, "matrix": [5, 1]},
{"x": 10, "y": 1, "matrix": [5, 2]},
{"x": 11, "y": 1.31, "matrix": [5, 3]},
{"x": 12, "y": 2.33, "matrix": [5, 4]},
{"x": 0, "y": 3.33, "matrix": [2, 0]},
{"x": 1, "y": 2.31, "matrix": [2, 1]},
{"x": 2, "y": 2, "matrix": [2, 2]},
{"x": 3, "y": 2.28, "matrix": [2, 3]},
{"x": 4, "y": 2.42, "matrix": [2, 4]},
{"x": 8, "y": 2.42, "matrix": [6, 0]},
{"x": 9, "y": 2.28, "matrix": [6, 1]},
{"x": 10, "y": 2, "matrix": [6, 2]},
{"x": 11, "y": 2.31, "matrix": [6, 3]},
{"x": 12, "y": 3.33, "matrix": [6, 4]},
{"x": 4, "y": 3.75, "matrix": [3, 0]},
{"x": 5, "y": 4, "matrix": [3, 1]},
{"x": 7, "y": 4, "matrix": [7, 0]},
{"x": 8, "y": 3.75, "matrix": [7, 1]}
{ "label": "L16", "matrix": [3, 0], "x": 4, "y": 3.75 },
{ "label": "L17", "matrix": [3, 1], "x": 5, "y": 4 },
{ "label": "R16", "matrix": [7, 0], "x": 7, "y": 4 },
{ "label": "R17", "matrix": [7, 1], "x": 8, "y": 3.75 }
]
}
}

View File

@@ -1,14 +1 @@
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
UNICODE_ENABLE = yes # Unicode
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes # Use shared split_common code
# This file intentionally left blank

View File

@@ -42,9 +42,14 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP13
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
/* Audio (Unsupported for now)*/
// #define AUDIO_PIN GP16
// #define SPEAKER_SHUTDOWN GP14
/* Audio */
#define AUDIO_PIN GP16
#define AUDIO_PWM_DRIVER PWMD0
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A
#define AUDIO_INIT_DELAY
#define AUDIO_CLICKY
#define SPEAKER_SHUTDOWN GP14
#ifdef RGB_MATRIX_ENABLE

View File

@@ -26,3 +26,6 @@
#undef SPI_SELECT_MODE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#undef HAL_USE_PWM
#define HAL_USE_PWM TRUE

View File

@@ -18,17 +18,25 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE,
LT(1,KC_MUTE),
KC_ENT, KC_0, KC_BSPC,
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3
)
),
[1] = LAYOUT(
_______,
CK_TOGG, AU_TOGG, _______,
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
),
};
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(_______, _______) },
};
#endif
@@ -111,4 +119,3 @@ bool oled_task_user(void) {
}
#endif

View File

@@ -0,0 +1,98 @@
// Copyright 2023 Peter.Falken (@PeterFalken)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "peterfalken.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE,
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3,
KC_ENT, KC_0, KC_BSPC
)
};
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
};
#endif
#ifdef OLED_ENABLE
static void render_qmk_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe,
0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x7e, 0xf8, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff,
0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0x7e, 0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_logo, sizeof(qmk_logo));
}
bool oled_task_user(void) {
render_qmk_logo();
return true;
}
#endif // OLED_ENABLE

View File

@@ -0,0 +1,3 @@
# Setup QMK features
ENCODER_MAP_ENABLE = yes
RGB_MATRIX_ENABLE = no # Disable RGB key matrix

View File

@@ -18,7 +18,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE,
LT(1,KC_MUTE),
KC_ENT, KC_0, KC_BSPC,
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
_______,
_______, _______, _______,
CK_TOGG, AU_TOGG, _______,
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
@@ -135,4 +135,3 @@ bool oled_task_user(void) {
}
#endif

View File

@@ -41,6 +41,31 @@ led_config_t g_led_config = { {
#endif
#ifdef AUDIO_ENABLE
void keyboard_pre_init_kb(void) {
// ensure pin is set and enabled pre-audio init
setPinOutput(SPEAKER_SHUTDOWN);
writePinHigh(SPEAKER_SHUTDOWN);
keyboard_pre_init_user();
}
void keyboard_post_init_kb(void) {
// set pin based on active status
writePin(SPEAKER_SHUTDOWN, audio_is_on());
keyboard_post_init_user();
}
void audio_on_user(void) {
writePinHigh(SPEAKER_SHUTDOWN);
}
void audio_off_user(void) {
// needs a delay or it runs right after play note.
wait_ms(200);
writePinLow(SPEAKER_SHUTDOWN);
}
#endif
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }

View File

@@ -20,3 +20,6 @@
#undef RP_SPI_USE_SPI1
#define RP_SPI_USE_SPI1 TRUE
#undef RP_PWM_USE_PWM0
#define RP_PWM_USE_PWM0 TRUE

View File

@@ -9,8 +9,8 @@ COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
# AUDIO_DRIVER = pwm_software
AUDIO_ENABLE = yes # Audio output
AUDIO_DRIVER = pwm_hardware
ENCODER_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

View File

@@ -17,60 +17,117 @@
"layouts": {
"LAYOUT_all": {
"layout": [
{"label":"F1", "x":0, "y":0},
{"label":"Tab", "x":1.25, "y":0, "w":1.5},
{"label":"Q", "x":2.75, "y":0},
{"label":"W", "x":3.75, "y":0},
{"label":"E", "x":4.75, "y":0},
{"label":"R", "x":5.75, "y":0},
{"label":"T", "x":6.75, "y":0},
{"label":"Y", "x":7.75, "y":0},
{"label":"U", "x":8.75, "y":0},
{"label":"I", "x":9.75, "y":0},
{"label":"O", "x":10.75, "y":0},
{"label":"P", "x":11.75, "y":0},
{"label":"{", "x":12.75, "y":0},
{"label":"Backspace", "x":13.75, "y":0, "w":1.5},
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5},
{"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0},
{"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0},
{"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0},
{"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0},
{"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0},
{"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0},
{"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0},
{"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0},
{"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0},
{"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0},
{"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5},
{"label":"F2", "x":0, "y":1},
{"label":"Caps Lock", "x":1.25, "y":1, "w":1.75},
{"label":"A", "x":3, "y":1},
{"label":"S", "x":4, "y":1},
{"label":"D", "x":5, "y":1},
{"label":"F", "x":6, "y":1},
{"label":"G", "x":7, "y":1},
{"label":"H", "x":8, "y":1},
{"label":"J", "x":9, "y":1},
{"label":"K", "x":10, "y":1},
{"label":"L", "x":11, "y":1},
{"label":":", "x":12, "y":1},
{"label":"Enter", "x":13, "y":1, "w":2.25},
{"label":"F3", "x":0, "y":2},
{"label":"Shift", "x":1.25, "y":2, "w":2.25},
{"label":"Z", "x":3.5, "y":2},
{"label":"X", "x":4.5, "y":2},
{"label":"C", "x":5.5, "y":2},
{"label":"V", "x":6.5, "y":2},
{"label":"B", "x":7.5, "y":2},
{"label":"N", "x":8.5, "y":2},
{"label":"M", "x":9.5, "y":2},
{"label":"<", "x":10.5, "y":2},
{"label":"Shift", "x":11.5, "y":2, "w":1.75},
{"label":"Up", "x":13.25, "y":2},
{"label":"?", "x":14.25, "y":2},
{"label":"F4", "x":0, "y":3},
{"label":"Ctrl", "x":1.25, "y":3, "w":1.25},
{"label":"Win", "x":2.5, "y":3},
{"label":"Alt", "x":3.5, "y":3, "w":1.25},
{"label":"Spacebar", "x":4.75, "y":3, "w":2.25},
{"label":"Spacebar", "x":7, "y":3, "w":1.25},
{"label":"Spacebar", "x":8.25, "y":3, "w":2.75},
{"label":"Alt", "x":11, "y":3, "w":1.25},
{"label":"Left", "x":12.25, "y":3},
{"label":"Down", "x":13.25, "y":3},
{"label":"Right", "x":14.25, "y":3}
{"label": "F2", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75},
{"label": "A", "matrix": [1, 2], "x": 3, "y": 1},
{"label": "S", "matrix": [1, 3], "x": 4, "y": 1},
{"label": "D", "matrix": [1, 4], "x": 5, "y": 1},
{"label": "F", "matrix": [1, 5], "x": 6, "y": 1},
{"label": "G", "matrix": [1, 6], "x": 7, "y": 1},
{"label": "H", "matrix": [1, 7], "x": 8, "y": 1},
{"label": "J", "matrix": [1, 8], "x": 9, "y": 1},
{"label": "K", "matrix": [1, 9], "x": 10, "y": 1},
{"label": "L", "matrix": [1, 10], "x": 11, "y": 1},
{"label": ":", "matrix": [1, 11], "x": 12, "y": 1},
{"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25},
{"label": "F3", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25},
{"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2},
{"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2},
{"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2},
{"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2},
{"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2},
{"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2},
{"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2},
{"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2},
{"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75},
{"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2},
{"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2},
{"label": "F4", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25},
{"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25},
{"label": "Spacebar", "matrix": [3, 5], "x": 4.75, "y": 3, "w": 2.25},
{"label": "Spacebar", "matrix": [3, 6], "x": 7, "y": 3, "w": 1.25},
{"label": "Spacebar", "matrix": [3, 7], "x": 8.25, "y": 3, "w": 2.75},
{"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25},
{"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3},
{"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3},
{"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3}
]
},
"LAYOUT_625u_space": {
"layout": [
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5},
{"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0},
{"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0},
{"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0},
{"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0},
{"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0},
{"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0},
{"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0},
{"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0},
{"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0},
{"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0},
{"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5},
{"label": "F2", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75},
{"label": "A", "matrix": [1, 2], "x": 3, "y": 1},
{"label": "S", "matrix": [1, 3], "x": 4, "y": 1},
{"label": "D", "matrix": [1, 4], "x": 5, "y": 1},
{"label": "F", "matrix": [1, 5], "x": 6, "y": 1},
{"label": "G", "matrix": [1, 6], "x": 7, "y": 1},
{"label": "H", "matrix": [1, 7], "x": 8, "y": 1},
{"label": "J", "matrix": [1, 8], "x": 9, "y": 1},
{"label": "K", "matrix": [1, 9], "x": 10, "y": 1},
{"label": "L", "matrix": [1, 10], "x": 11, "y": 1},
{"label": ":", "matrix": [1, 11], "x": 12, "y": 1},
{"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25},
{"label": "F3", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25},
{"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2},
{"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2},
{"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2},
{"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2},
{"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2},
{"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2},
{"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2},
{"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2},
{"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75},
{"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2},
{"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2},
{"label": "F4", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25},
{"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25},
{"label": "Spacebar", "matrix": [3, 6], "x": 4.75, "y": 3, "w": 6.25},
{"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25},
{"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3},
{"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3},
{"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3}
]
}
}

View File

@@ -0,0 +1,41 @@
// Copyright 2022 Arturo Avila (@ADPenrose)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[0] = LAYOUT_625u_space(
KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
KC_MUTE, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
KC_VOLU, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT, KC_UP, KC_SLSH,
KC_VOLD, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_625u_space(
KC_DEL, KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_625u_space(
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_RBRC,
KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_625u_space(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif

View File

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

View File

@@ -0,0 +1,16 @@
# Matrix Diagram for ADPenrose Obi
```
┌───┐┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
│00 ││01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │
├───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
│10 ││11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1D │
├───┤├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
│20 ││21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2C │2D │
├───┤├────┬───┼───┴┬──┴───┴─┬─┴──┬┴───┴───┴─┬─┴──┬───┼───┼───┤
│30 ││31 │32 │33 │35 │36 │37 │3A │3B │3C │3D │
└───┘└────┴───┴────┴────────┴────┴──────────┴────┴───┴───┴───┘
┌────────────────────────┐
│36 │ 6.25u Space
└────────────────────────┘
```

View File

@@ -1,5 +0,0 @@
// Copyright 2022 Arturo Avila (@ADPenrose)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "obi.h"

View File

@@ -1,26 +0,0 @@
// Copyright 2022 Arturo Avila (@ADPenrose)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
/* This is a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys.
*
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, K2D, \
K30, K31, K32, K33, K35, K36, K37, K3A, K3B, K3C, K3D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, KC_NO, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, KC_NO, K2C, K2D }, \
{ K30, K31, K32, K33, KC_NO, K35, K36, K37, KC_NO, KC_NO, K3A, K3B, K3C, K3D } \
}

View File

@@ -0,0 +1,73 @@
{
"manufacturer": "AlhenKB",
"keyboard_name": "Macropad 5x4",
"maintainer": "alhenx",
"development_board": "promicro",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"rows": ["F5", "F7", "B3", "B6", "B5"],
"cols": ["F4", "F6", "B1", "B2"]
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0001",
"vid": "0x6178"
},
"community_layouts": ["ortho_5x4", "numpad_5x4"],
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
{"label": "K00 (F5,F4)", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01 (F5,F6)", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02 (F5,B1)", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03 (F5,B2)", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K10 (F7,F4)", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "K11 (F7,F6)", "matrix": [1, 1], "x": 1, "y": 1},
{"label": "K12 (F7,B1)", "matrix": [1, 2], "x": 2, "y": 1},
{"label": "K13 (F7,B2)", "matrix": [1, 3], "x": 3, "y": 1},
{"label": "K20 (B3,F4)", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "K21 (B3,F6)", "matrix": [2, 1], "x": 1, "y": 2},
{"label": "K22 (B3,B1)", "matrix": [2, 2], "x": 2, "y": 2},
{"label": "K23 (B3,B2)", "matrix": [2, 3], "x": 3, "y": 2},
{"label": "K30 (B6,F4)", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "K31 (B6,F6)", "matrix": [3, 1], "x": 1, "y": 3},
{"label": "K32 (B6,B1)", "matrix": [3, 2], "x": 2, "y": 3},
{"label": "K33 (B6,B2)", "matrix": [3, 3], "x": 3, "y": 3},
{"label": "K40 (B5,F4)", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "K41 (B5,F6)", "matrix": [4, 1], "x": 1, "y": 4},
{"label": "K42 (B5,B1)", "matrix": [4, 2], "x": 2, "y": 4},
{"label": "K43 (B5,B2)", "matrix": [4, 3], "x": 3, "y": 4}
]
},
"LAYOUT_numpad_5x4": {
"layout": [
{"label": "K00 (F5,F4)", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01 (F5,F6)", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02 (F5,B1)", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03 (F5,B2)", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K10 (F7,F4)", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "K11 (F7,F6)", "matrix": [1, 1], "x": 1, "y": 1},
{"label": "K12 (F7,B1)", "matrix": [1, 2], "x": 2, "y": 1},
{"label": "K20 (B3,F4)", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "K21 (B3,F6)", "matrix": [2, 1], "x": 1, "y": 2},
{"label": "K22 (B3,B1)", "matrix": [2, 2], "x": 2, "y": 2},
{"label": "K23 (B3,B2)", "matrix": [2, 3], "x": 3, "y": 1, "h": 2},
{"label": "K30 (B6,F4)", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "K31 (B6,F6)", "matrix": [3, 1], "x": 1, "y": 3},
{"label": "K32 (B6,B1)", "matrix": [3, 2], "x": 2, "y": 3},
{"label": "K40 (B5,F4)", "matrix": [4, 0], "x": 0, "y": 4, "w": 2},
{"label": "K42 (B5,B1)", "matrix": [4, 2], "x": 2, "y": 4}
{"label": "K43 (B5,B2)", "matrix": [4, 3], "x": 3, "y": 3, "h": 2},
]
}
}
}

View File

@@ -0,0 +1,27 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┐
* │ 1 │ 2 │ 3 │ 4 │
* ├───┼───┼───┼───┤
* │ 5 │ 6 │ 7 │ 8 │
* ├───┼───┼───┼───┤
* │ Q │ W │ E │ R │
* ├───┼───┼───┼───┤
* │ A │ S │ D │ F │
* ├───┼───┼───┼───┤
* │ Z │ X │ C │ V │
* └───────┴───┴───┘
*/
[0] = LAYOUT_ortho_5x4(
KC_P1, KC_P2, KC_P3, KC_P4,
KC_P5, KC_P6, KC_P7, KC_P8,
KC_Q, KC_W, KC_E, KC_R,
KC_A, KC_S, KC_D, KC_F,
KC_Z, KC_X, KC_C, KC_V
),
};

View File

@@ -0,0 +1,48 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┐
* │TG1│ / │ * │ - │
* ├───┼───┼───┼───┤
* │ 7 │ 8 │ 9 │ │
* ├───┼───┼───┤ + │
* │ 4 │ 5 │ 6 │ │
* ├───┼───┼───┼───┤
* │ 1 │ 2 │ 3 │ │
* ├───┴───┼───┤Ent│
* │ 0 │ . │ │
* └───────┴───┴───┘
*/
[0] = LAYOUT_numpad_5x4(
TG(1), KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3,
KC_P0, KC_PDOT, KC_PENT
),
/*
* ┌───┬───┬───┬───┐
* │TG1│ / │ * │ - │
* ┌───┬───┬───┐───┤
* │Hom│ ↑ │PgU│ │
* ├───┼───┼───┤ + │
* │ ← │ │ → │ │
* ├───┼───┼───┤───┤
* │End│ ↓ │PgD│ │
* ├───┴───┼───┤Ent│
* │Insert │Del│ │
* └───────┴───┘───┘
*/
[1] = LAYOUT_numpad_5x4(
_______, _______, _______, _______,
KC_HOME, KC_UP, KC_PGUP,
KC_LEFT, XXXXXXX, KC_RGHT, _______,
KC_END, KC_DOWN, KC_PGDN,
KC_INS, KC_DEL, _______
)
};

View File

@@ -0,0 +1,27 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┐
* │ 1 │ 2 │ 3 │ 4 │
* ├───┼───┼───┼───┤
* │ 5 │ 6 │ 7 │ 8 │
* ├───┼───┼───┼───┤
* │ Q │ W │ E │ R │
* ├───┼───┼───┼───┤
* │ A │ S │ D │ F │
* ├───┼───┼───┼───┤
* │ Z │ X │ C │ V │
* └───────┴───┴───┘
*/
[0] = LAYOUT_ortho_5x4(
KC_P1, KC_P2, KC_P3, KC_P4,
KC_P5, KC_P6, KC_P7, KC_P8,
KC_Q, KC_W, KC_E, KC_R,
KC_A, KC_S, KC_D, KC_F,
KC_Z, KC_X, KC_C, KC_V
),
};

View File

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

View File

@@ -0,0 +1,41 @@
# AlhenKB - Macropad 5x4 and Numpad
![Imgur Image](https://imgur.com/t7Zi2w3h.jpg)
![Imgur Image](https://i.imgur.com/5xlKJlBh.jpg)
A macropad 5x4 for MerryPCB.
* Keyboard Maintainer: [Alhen](https://github.com/alhenx)
* Hardware Supported: MerryPCB
Make example for this keyboard (after setting up your build environment):
Macropad:
make alhenkb/macropad5x4:default
Numpad:
make alhenkb/macropad5x4:numpad
Flashing example for this keyboard:
Macropad:
make alhenkb/macropad5x4:default:flash
Numpad:
make alhenkb/macropad5x4:numpad:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -0,0 +1 @@
# This file intentionally left blank

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