Compare commits

..

76 Commits

Author SHA1 Message Date
Nick Brassel
884be6c1ba Fix up operator precedence in RGBLIGHT (#21280) 2023-06-18 14:33:18 +10:00
James Young
a2171ff4e8 Dymium65 Layout Touch-Up (#21269)
* [refactor] friendly-format info.json

* [refactor] correct layout data
2023-06-17 20:38:02 +01:00
James Young
d57acc7c5c DOIO KB38 Refactor (#21268)
* [refactor] keymap refactor

- tidy-up box drawing
- update keycode alignment for readability
- use QMK-native keycode aliases

* [refactor] correct layout data

* [docs] add image to readme
2023-06-17 20:36:43 +01:00
James Young
94311e4dc2 Alas: ISO Layouts Fix and Matrix Diagram (#21255) 2023-06-15 14:57:13 -06:00
James Young
5263dfb88d ButterKeebs PocketPad: correct layout data (#21256) 2023-06-15 14:56:07 -06:00
James Young
9b36ec5351 DOIO KB30 Refactor (#21250)
* refactor keymaps

- remove extra blank lines
- convert tabs to spaces
- use four-space indent
- grid-align keycodes
- use QMK-native keycode aliases

* info.json: correct layout data

* add readme.md

* info.json: correct maintainer field

Updates the value to reference the maintainer's GitHub username.
2023-06-15 13:18:56 +01:00
Sleepdealr
66f06a175f [Keyboard] Add Artemis Paragon (#20910)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-06-14 22:28:06 -06:00
jonylee@hfd
8f980ea69f [Keyboard] add top40 keyboard. (#21199)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-06-14 22:25:23 -06:00
jonylee@hfd
bbba1d07f9 [Keyboard] add acr87 keyboard. (#21200) 2023-06-14 22:23:46 -06:00
blindassassin111
3703d5a83b [Keyboard] Adding OSAv2 Numpad Topre support (#21224) 2023-06-14 22:20:49 -06:00
Andrew Kannan
a2c17d5518 [Keyboard] Add CannonKeys Leviatan PCB (#21231) 2023-06-14 22:08:16 -06:00
Gastón Jorquera
92203440cd [Keymap] Left Control is now ESC when tapped (#21241) 2023-06-14 22:00:13 -06:00
Álvaro A. Volpato
87858108b5 Modernize M75H and M75S firmwares (#21244) 2023-06-14 21:58:55 -06:00
dztech
baa9252db2 [Keyboard] add pluto keyboard (#21225) 2023-06-14 20:29:39 -07:00
James Young
776e980ac1 4pplet Waffling60 Rev D ISO Layout Fix and Additions (#21236)
* correct layout data

* add matrix diagram

* rename LAYOUT to LAYOUT_all

* add LAYOUT_60_iso_tsangan_split_bs_rshift

* add LAYOUT_60_iso_tsangan_split_rshift

* add LAYOUT_60_iso_wkl_split_bs_rshift

* add LAYOUT_60_iso_wkl_split_rshift
2023-06-14 18:45:37 -07:00
Danny
f5ee7b7ed8 Add Sinc Rev. 4 (#21130)
* Fork Rev. 3 to 4

* Update RGB LED positions

* Adjust RGB positions

* Enable more RGB modes

* Update copyrights

* Add license headers to keymaps

* Use same type of license header

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

* Fix I2C pins

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2023-06-14 12:26:46 -04:00
jonylee@hfd
4055f2a937 [Keyboard]add 5108 Keyboard. (#21184)
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-06-14 00:27:08 -06:00
rhmokey
55987542e1 [Keyboard] Add mokey12x2 (#20702)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2023-06-13 09:17:55 -06:00
Alabahuy
1194a6f0dd [Keyboard] jaykeeb skyline (#21219) 2023-06-13 09:08:37 -06:00
Alberto Pavano
e8b7244bb5 [Keyboard] rainkeebs trailmix (#20189)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-06-13 09:05:03 -06:00
David Hoelscher
dabbc93df4 [Keyboard] Add ErgoStrafer keyboard (#21195) 2023-06-12 23:32:54 -07:00
Joe Scotto
ca6921b1ba [Keyboard] Add ScottoNum macropad (#21208) 2023-06-13 00:17:18 -06:00
Joe Scotto
2d838d8ba9 [Keyboard] Add ScottoFrog macropad (#21209) 2023-06-12 13:08:13 -06:00
Alabahuy
53f20b197b [Keyboard] Add orba keyboard (#21132) 2023-06-11 18:12:19 -07:00
Joe Scotto
fdb2851187 [Keyboard] Add ScottoSplit Keyboard (#20945)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-06-11 01:56:20 -06:00
flashquark
40c3b71569 [Keyboard] Add Flashquark Horizon Z (#21055)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-06-11 01:55:06 -06:00
Joe Scotto
33c93d3a96 [Keyboard] Add Scotto34 (PCB Edition) (#21085)
Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
2023-06-11 01:52:43 -06:00
Joe Scotto
1914fbd951 [Keyboard] Add Scotto9 handwired macropad (#21105)
Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-06-11 01:52:24 -06:00
FanXingStudio
bfdfeb6f3f [Keyboard] Add kibou/winter (#21161) 2023-06-11 01:51:17 -06:00
blindassassin111
8cd9f07c30 [Keyboard] Adding OSAv2 Topre PCB (#21080) 2023-06-10 23:27:13 -07:00
James Young
dd8b4dce55 Atreyu: correct layout data (#21197) 2023-06-10 16:33:33 -07:00
Allen Choi
57b23b8d96 [Keymap] thunderbird2086 layer status with RGB lighting/matrix (#21063) 2023-06-10 14:35:15 -06:00
Florent Linguenheld
eee9a53a80 Up keymap (#20769)
flinguenheld keymap aurora sweep
2023-06-10 16:01:44 +01:00
Cipulot
08289fc53a EC Alveus (#20840)
Cipulot's EC Alveus PR
2023-06-10 15:58:36 +01:00
Tom Barnes
f35cb924e9 Update newbs docs with some rp2040 stuff (#21186)
* Update newbs_building_firmware_configurator.md

* Update docs/newbs_flashing.md


Co-authored-by: Ryan <fauxpark@gmail.com>
2023-06-10 15:56:43 +01:00
Jared
e01e3fc866 Typo Correction in planck/rev7 readme.md (#21194)
Corrected typo explaining encoder requirements.
2023-06-09 22:16:46 -04:00
Joe Scotto
a875f7f038 [Keyboard] Add ScottoGame Keyboard (#20940) 2023-06-09 17:48:55 -06:00
Ryan
e3b80b4151 Remove some keymap-level info.jsons (#21191) 2023-06-09 19:34:24 +01:00
Pablo Martínez
04b7a262e0 Fix typo (#21189) 2023-06-09 15:51:17 +01:00
Jack Humbert
232281946d Adds Planck Rev 7 & Updates rev6_drop to Matrix Lite Implementation (#21175)
* adds planck/rev7

* Remove config.h include

Co-authored-by: Drashna Jaelre <drashna@live.com>

* convert planck matrices to lite implementation

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-06-08 21:46:09 -04:00
Ryan
a9f677b518 Slightly refine g_led_config parsing (#21170) 2023-06-08 21:08:02 +01:00
Albert Y
4c6c387724 Add an emphasis on QMK MSYS terminal (#21168)
* Add an emphasis on QMK MSYS terminal

Not using MSYS terminal is a frequent user error. This change
adds an additional statement to guide users to run the first
command in MSYS itself. Edited the same statement for consistency
in the other OSes.

* Update instructions for the other operating systems
2023-06-08 10:10:30 +01:00
NortonTech
d042b92e7a Add NortonTech handwired keypad (NortonTechPad) (#21148) 2023-06-08 02:47:06 +01:00
biuboom-jun
f136171753 add kibou/wendy (#21150) 2023-06-08 02:03:17 +01:00
James Young
dffbe1e655 monoflex60: fix LAYOUT_60_iso_tsangan implementation (#21158) 2023-06-08 00:57:05 +01:00
James Young
57c5f3e674 poker87d: correct layout data (#21159) 2023-06-08 00:55:49 +01:00
Pablo Martínez
ae0342c12a [Bugfix] LVGL bindings wrong offset math (#21147) 2023-06-08 08:59:13 +10:00
James Young
bb57aa28e5 peej/tripel: correct layout data (#21145)
Corrects the layout data for all three versions of the Peej Tripel.
2023-06-06 22:54:31 +01:00
James Young
45d060805e xelus/rs108: correct layout data (#21146) 2023-06-06 22:46:15 +01:00
Travis Mick
dd9712c40e [Keyboard] Add egg58 (#21021) 2023-06-06 00:03:57 -07:00
Joe Scotto
97014f0722 [Keyboard] Add Scotto36 handwired keyboard (#21104)
Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
2023-06-05 23:46:21 -06:00
Joe Scotto
eaef139fc3 [Keyboard] Add Scotto40 handwired keyboard (#21103) 2023-06-05 23:42:27 -06:00
Joe Scotto
e1c4b7ce30 [Keyboard] Add ScottoStarter handwired keyboard (#21101) 2023-06-05 23:34:28 -06:00
Albert Y
43ce7b0df5 [Docs] Highlight keymap name entry (#21138) 2023-06-05 23:17:39 -06:00
FanXingStudio
9167e66ca7 [Keyboard] add kibou/harbour (#21131) 2023-06-05 23:13:47 -06:00
Jeayo Keh
04812e9443 [Keyboard] Add soda/mango (#21100)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2023-06-05 14:43:02 -06:00
Will Hedges
8f108d1bbc [Keyboard] Upddate bioi/G60BLE to use bluetooth (#21120)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-06-05 14:34:22 -06:00
Moritz Plattner
7b57c4ecf6 fixed E80 1800 layout macros (#21125) 2023-06-05 06:58:59 +01:00
Ramiro Bou
67b9f56f22 Fix USB PIDs on Churrosoft Deck-8 (#21126) 2023-06-04 02:48:29 +01:00
mechlovin
698e31a2b0 [Keyboard] Zed65 Rev.1 - Update info.json (#21122) 2023-06-04 02:10:53 +01:00
Guido Bartolucci
23a9d1ffc7 [Keyboard] Add Andean Condor (#21118)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-06-03 14:39:13 -06:00
Ramiro Bou
f6bbd4d2c5 [Keyboard] Add Churrosoft Deck-8 (#21119)
Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-06-03 14:38:09 -06:00
mechlovin
f4a608255a [Keyboard] Add the Zed65 rev.1 PCB (#21043)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-06-03 01:03:45 -06:00
Duncan Sutherland
d1991f5307 Update split_3x5_2 community layout info (#21022) 2023-06-03 03:13:52 +01:00
yiancar
ae5bcaac0d [keyboard] Phoenix (#21051)
* Update keyboards/cablecardesigns/phoenix/
2023-06-02 08:45:54 +01:00
DeskDaily
b110a09886 [Keyboard] Add lightweight65 keyboard (#21034)
Co-authored-by: Neil Brian Ramirez <nightlykeyboards@gmail.com>
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2023-06-01 07:10:47 -07:00
Sergi Meseguer
c805c10672 [Keymap] z12 zigotica keymap tweaks (#20990) 2023-06-01 02:25:49 -07:00
adiabatic
0c9c4a4e56 [Keymap] zweihander-macos: Don’t pretend to be a mouse (#20997) 2023-06-01 02:25:33 -07:00
kkokdae
81bc0925e9 [Keymap] Modify kkokdae keymap for keyboardio/atreus (#21037) 2023-05-31 12:02:58 -07:00
CoffeeIsLife
c2ddd77e0d [Keymap] Cleanup coffeeislife87 keymap and remove features (#21061)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Fae <faenkhauser@gmail.com>
2023-05-31 11:46:59 -07:00
Drashna Jaelre
3a3e5abac9 [Keymap] Drashna Keymap updates for 0.21.0 (#21073) 2023-05-31 11:44:06 -07:00
Sergey Vlasov
1411c79aef qmk find: Fix handling of functions in filters (#21090)
Functions in filters did not work properly except when used in the last
(or only) filter.  The problem was caused by the peculiarity of the
`lambda` behavior in Python — any variables from the outer scope are
captured only by reference, therefore any subsequent reassignment of
those variables is propagated to all lambdas created earlier in the same
scope.  Together with the laziness of `filter()` (it returns an iterator
which performs filtering on demand) this resulted in all function
filters using the values of the `key` and `value` variables which
correspond to the last filter in the sequence, therefore the result of
filtering was wrong if some filter with a function was not the last one
in the sequence.

Apparently the shortest way to make a Python lambda capture some
variables by value is to add arguments with default values for such
variables (default values are evaluated when the lambda is created, and
any subsequent reassignments in the outer scope no longer changes them).
This makes filters with functions work properly even when such filters
are not at the last position in the sequence.
2023-05-30 19:24:19 +01:00
dependabot[bot]
913691b9f0 Bump tj-actions/changed-files from 35 to 36 (#21058)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35 to 36.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v35...v36)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  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-05-30 02:10:57 +01:00
precondition
1e2deddd43 Remove outdated remarks regarding the default MT behavior (#21077) 2023-05-30 02:08:15 +01:00
Joel Challis
42c6920e23 Update auto_tag.yml (#21050) 2023-05-28 23:27:13 +01:00
Joel Challis
d02ff2edd9 Update "Most Recent ChangeLog" (#21071) 2023-05-28 21:36:46 +01:00
461 changed files with 20588 additions and 4875 deletions

View File

@@ -32,7 +32,7 @@ jobs:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.62.0
uses: anothrNick/github-tag-action@1.66.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'

View File

@@ -35,7 +35,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v35
uses: tj-actions/changed-files@v36
- name: Run qmk formatters
shell: 'bash {0}'

View File

@@ -27,7 +27,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v35
uses: tj-actions/changed-files@v36
- name: Print info
run: |

View File

@@ -139,7 +139,7 @@
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* [Most Recent ChangeLog](ChangeLog/20230226.md "QMK v0.20.0 - 2023 Feb 26")
* [Most Recent ChangeLog](ChangeLog/20230528.md "QMK v0.21.0 - 2023 May 28")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development

View File

@@ -119,7 +119,6 @@ This happens immediately after the previous `develop` branch is merged to `maste
* `git commit -m 'Branch point for <DATE> Breaking Change'`
* `git tag breakpoint_<YYYY>_<MM>_<DD>`
* `git push upstream breakpoint_<YYYY>_<MM>_<DD>`
* `git push upstream develop`
* All submodules under `lib` now need to be checked against their QMK-based forks:
* `git submodule foreach git log -n1`

View File

@@ -155,7 +155,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
uint8_t current_layer = get_highest_layer(layer_state);
// Check if we are within the range, if not quit
if (curent_layer > LAYER_CYCLE_END || current_layer < LAYER_CYCLE_START) {
if (current_layer > LAYER_CYCLE_END || current_layer < LAYER_CYCLE_START) {
return false;
}

View File

@@ -4,6 +4,8 @@
The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware `.hex` or `.bin` files.
It should be noted that Configurator cannot produce firmwares for keyboards using a different controller than they were designed for, i.e. an RP2040 controller on a board designed for pro micro. You will have to use the command line [converters](https://docs.qmk.fm/#/feature_converters?id=supported-converters) for this.
Watch the [Video Tutorial](https://www.youtube.com/watch?v=-imgglzDMdY). Many people find that is enough information to start programming their own keyboard.
The QMK Configurator works best with Chrome or Firefox.

View File

@@ -85,6 +85,8 @@ Visit the [QMK Configurator](https://config.qmk.fm/#/) to create a keymap file:
3. Customise the key layout according to your preference.
4. Select download next to **KEYMAP.JSON** and save the JSON file into the `~/qmk_keymap/` folder.
!> **Important:** Make sure that the GitHub username you use in step 2 is correct. If it is not, the build process will fail to locate your files in the right folder.
### Add a GitHub Action workflow
Open the file `~/qmk_keymap/.github/workflows/build.yml` with your favorite [text editor](newbs_learn_more_resources.md#text-editor-resources), paste the following workflow content, and save it:

View File

@@ -15,7 +15,7 @@ Different keyboards have different ways to enter this special mode. If your PCB
* Press the physical `RESET` button, usually located on the underside of the PCB
* Locate header pins on the PCB labeled `RESET` and `GND`, and short them together while plugging your PCB in
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/Uq7gcHh) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` or `RP2-B1` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/Uq7gcHh) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:
@@ -31,6 +31,8 @@ The simplest way to flash your keyboard will be with the [QMK Toolbox](https://g
However, the Toolbox is currently only available for Windows and macOS. If you're using Linux (or just wish to flash the firmware from the command line), skip to the [Flash your Keyboard from the Command Line](#flash-your-keyboard-from-the-command-line) section.
?> QMK Toolbox is not necessary for flashing [RP2040 devices](https://docs.qmk.fm/#/flashing?id=raspberry-pi-rp2040-uf2).
### Load the File into QMK Toolbox
Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- `.hex` or `.bin`. QMK tries to copy the appropriate one for your keyboard into the root `qmk_firmware` directory.

View File

@@ -120,7 +120,7 @@ NOTE: remember to follow the instructions printed at the end of installation (us
### ** Windows **
After installing QMK you can set it up with this command:
Open QMK MSYS and run the following command:
qmk setup
@@ -128,7 +128,7 @@ In most situations you will want to answer `y` to all of the prompts.
### ** macOS **
After installing QMK you can set it up with this command:
Open Terminal and run the following command:
qmk setup
@@ -136,7 +136,7 @@ In most situations you will want to answer `y` to all of the prompts.
### ** Linux/WSL **
After installing QMK you can set it up with this command:
Open your preferred terminal app and run the following command:
qmk setup
@@ -150,7 +150,7 @@ Luckily, the fix is easy. Run this as your user: `echo 'PATH="$HOME/.local/bin:$
### ** FreeBSD **
After installing QMK you can set it up with this command:
Open your preferred terminal app and run the following command:
qmk setup

View File

@@ -296,7 +296,7 @@ However, this slightly different sequence will not be affected by the “permiss
In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host. We could describe this as a “rolling press” (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order).
?> The `PERMISSIVE_HOLD` option is not noticeable if you also enable `HOLD_ON_OTHER_KEY_PRESS` because the latter option considers both the “nested tap” and “rolling press” sequences like shown above as a hold action, not the tap action. `HOLD_ON_OTHER_KEY_PRESS` makes the Tap-Or-Hold decision earlier in the chain of key events, thus taking a precedence over `PERMISSIVE_HOLD`. This remark also applies to default mod-taps.
?> The `PERMISSIVE_HOLD` option is not noticeable if you also enable `HOLD_ON_OTHER_KEY_PRESS` because the latter option considers both the “nested tap” and “rolling press” sequences like shown above as a hold action, not the tap action. `HOLD_ON_OTHER_KEY_PRESS` makes the Tap-Or-Hold decision earlier in the chain of key events, thus taking a precedence over `PERMISSIVE_HOLD`.
For more granular control of this feature, you can add the following to your `config.h`:
@@ -352,8 +352,6 @@ An example of a sequence that is affected by the “hold on other key press” m
Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `HOLD_ON_OTHER_KEY_PRESS` option enabled, the Layer Tap key is considered as a layer switch if another key is pressed, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2).
?> The `HOLD_ON_OTHER_KEY_PRESS` option is essentially redundant with the default mod-tap behaviour. The only notable difference is that `HOLD_ON_OTHER_KEY_PRESS` reduces the delay before the key events are made visible to the host.
For more granular control of this feature, you can add the following to your `config.h`:
```c

File diff suppressed because it is too large Load Diff

View File

@@ -18,14 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[0] = LAYOUT(
[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_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_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
// basic function layer
[1] = LAYOUT(
[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_DEL,
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_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUHS, KC_TRNS,

View File

@@ -18,28 +18,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[0] = LAYOUT(
[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_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_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_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
// basic function layer
[1] = LAYOUT(
[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_DEL,
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_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),
// extra layer for VIA
[2] = LAYOUT(
[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),
// extra layer for VIA
[3] = LAYOUT(
[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,

View File

@@ -0,0 +1,24 @@
# Matrix Diagram for 4pplet Waffling60 Rev D ISO
```
┌───────┐
2u Backspace │1D │
└───────┘
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐2D │
│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 │42 │44 │46 │48 │4B │4C │4D │
└─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
┌─────┬───┬───────────────────────────────────────┬───┬─────┐
│40 │41 │46 │4C │4D │ 10u Spacebar
└─────┴───┴───────────────────────────────────────┴───┴─────┘
```

View File

@@ -0,0 +1,7 @@
// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
#define TAPPING_TERM 499

View File

@@ -0,0 +1,100 @@
// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "drashna.h"
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
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, _______,
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
),
};
// clang-format on
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[1] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)},
};
#endif
void render_oled_title(bool side) {
oled_write_P(PSTR(" Macropad "), true);
}
void render_rgb_mode(uint8_t col, uint8_t line);
void l_render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line) {
oled_set_cursor(col, line);
#ifdef CAPS_WORD_ENABLE
led_usb_state.caps_lock |= is_caps_word_on();
#endif
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state.num_lock);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state.caps_lock);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state.scroll_lock);
}
bool oled_task_keymap(void) {
oled_write_raw_P(header_image, sizeof(header_image));
oled_set_cursor(0, 1);
oled_write_raw_P(row_2_image, sizeof(row_2_image));
oled_set_cursor(4, 0);
render_oled_title(false);
render_kitty(0, 2);
render_matrix_scan_rate(1, 7, 2);
#ifdef AUDIO_ENABLE
oled_set_cursor(7, 4);
bool l_is_audio_on = is_audio_on();
static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
oled_write_P(audio_status[l_is_audio_on], false);
# ifdef AUDIO_CLICKY
bool l_is_clicky_on = is_clicky_on();
static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
oled_write_P(audio_clicky_status[l_is_clicky_on && l_is_audio_on], false);
# endif
#endif
static const char PROGMEM cat_mode[3] = {0xF8, 0xF9, 0};
oled_write_P(cat_mode, get_keyboard_lock());
#ifdef RGB_MATIRX_ENABLE
static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
oled_write_P(rgb_layer_status[rgb_matrix_is_enabled()], false);
#endif
#ifdef HAPTIC_ENABLE
static const char PROGMEM nukem_good[2] = {0xFA, 0};
oled_write_P(haptic_get_enable() ? nukem_good : PSTR(" "), false);
#endif
l_render_keylock_status(host_keyboard_led_state(), 7, 5);
render_rgb_mode(1, 6);
for (uint8_t i = 1; i < 7; i++) {
oled_set_cursor(0, i);
oled_write_raw_P(display_border, sizeof(display_border));
oled_set_cursor(21, i);
oled_write_raw_P(display_border, sizeof(display_border));
}
oled_set_cursor(0, 7);
oled_write_raw_P(footer_image, sizeof(footer_image));
return false;
}

View File

@@ -0,0 +1,3 @@
ENCODER_MAP_ENABLE = yes
DEBUG_MATRIX_SCAN_RATE_ENABLE = api
WPM_ENABLE = yes

162
keyboards/akko/5108/5108.c Normal file
View File

@@ -0,0 +1,162 @@
/* Copyright (C) 2022 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
/*row0*/
{1, A_1, B_1, C_1},
{1, A_2, B_2, C_2},
{1, A_3, B_3, C_3},
{1, A_4, B_4, C_4},
{1, A_5, B_5, C_5},
{1, A_6, B_6, C_6},
{1, A_7, B_7, C_7},
{1, A_8, B_8, C_8},
{1, A_9, B_9, C_9},
{1, A_10, B_10, C_10},
{1, A_11, B_11, C_11},
{1, A_12, B_12, C_12},
{1, A_13, B_13, C_13},
{1, A_14, B_14, C_14},
{1, A_15, B_15, C_15},
{1, A_16, B_16, C_16},
{1, D_11, E_11, F_11},
{1, D_12, E_12, F_12},
{1, D_13, E_13, F_13},
{1, D_14, E_14, F_14},
/*row1*/
{0, A_1, B_1, C_1},
{0, A_2, B_2, C_2},
{0, A_3, B_3, C_3},
{0, A_4, B_4, C_4},
{0, A_5, B_5, C_5},
{0, A_6, B_6, C_6},
{0, A_7, B_7, C_7},
{0, A_8, B_8, C_8},
{0, A_9, B_9, C_9},
{0, A_10, B_10, C_10},
{0, A_11, B_11, C_11},
{0, A_12, B_12, C_12},
{0, A_13, B_13, C_13},
{0, A_14, B_14, C_14},
{1, D_1, E_1, F_1 },
{1, D_2, E_2, F_2},
{1, D_3, E_3, F_3},
{1, D_4, E_4, F_4},
{1, D_5, E_5, F_5},
{1, D_6, E_6, F_6},
{1, D_7, E_7, F_7},
/*row2*/
{0, D_1, E_1, F_1},
{0, D_2, E_2, F_2},
{0, D_3, E_3, F_3},
{0, D_4, E_4, F_4},
{0, D_5, E_5, F_5},
{0, D_6, E_6, F_6},
{0, D_7, E_7, F_7},
{0, D_8, E_8, F_8},
{0, D_9, E_9, F_9},
{0, D_10, E_10, F_10},
{0, D_11, E_11, F_11},
{0, D_12, E_12, F_12},
{0, D_13, E_13, F_13},
{0, D_14, E_14, F_14},
{1, G_1, H_1, I_1},
{1, G_2, H_2, I_2},
{1, G_3, H_3, I_3},
{1, D_8, E_8, F_8},
{1, D_9, E_9, F_9},
{1, D_10, E_10, F_10},
{1, G_7, H_7, I_7},
/*row3*/
{0, G_1, H_1, I_1},
{0, G_2, H_2, I_2},
{0, G_3, H_3, I_3},
{0, G_4, H_4, I_4},
{0, G_5, H_5, I_5},
{0, G_6, H_6, I_6},
{0, G_7, H_7, I_7},
{0, G_8, H_8, I_8},
{0, G_9, H_9, I_9},
{0, G_10, H_10, I_10},
{0, G_11, H_11, I_11},
{0, G_12, H_12, I_12},
{0, G_13, H_13, I_13},
{1, G_4, H_4, I_4},
{1, G_5, H_5, I_5},
{1, G_6, H_6, I_6},
/*row4*/
{0, J_1, K_1, L_1},
{0, J_2, K_2, L_2},
{0, J_3, K_3, L_3},
{0, J_4, K_4, L_4},
{0, J_5, K_5, L_5},
{0, J_6, K_6, L_6},
{0, J_7, K_7, L_7},
{0, J_8, K_8, L_8},
{0, J_9, K_9, L_9},
{0, J_10, K_10, L_10},
{0, J_11, K_11, L_11},
{0, J_12, K_12, L_12},
{1, J_4, K_4, L_4},
{1, J_7, K_7, L_7},
{1, J_8, K_8, L_8},
{1, J_9, K_9, L_9},
{1, J_10, K_10, L_10},
/*row5*/
{0, J_13, K_13, L_13},
{0, J_14, K_14, L_14},
{0, J_15, K_15, L_15},
{0, J_16, K_16, L_16},
{0, G_14, H_14, I_14},
{0, G_15, H_15, I_15},
{0, G_16, H_16, I_16},
{0, D_15, E_15, F_15},
{1, J_1, K_1, L_1},
{1, J_2, K_2, L_2},
{1, J_3, K_3, L_3},
{1, J_5, K_5, L_5},
{1, J_6, K_6, L_6},
};
#endif
void keyboard_pre_init_kb(void) {
setPinOutput(LED_WIN_LOCK_PIN); // LED3 Win Lock
writePinLow(LED_WIN_LOCK_PIN);
keyboard_pre_init_user();
}
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if (res) {
writePin(LED_WIN_LOCK_PIN, keymap_config.no_gui);
}
return res;
}

View File

@@ -0,0 +1,54 @@
/* Copyright (C) 2022 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Use 5 dynamic keymap layers */
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
/* LED Indicators */
#define LED_WIN_LOCK_PIN C11
/* 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
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
#define SPI_MOSI_PIN B5
#define SPI_MISO_PIN B4
#define SPI_MOSI_PAL_MODE 5
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
/* I2C Config for LED Driver */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110111
#define I2C1_SCL_PAL_MODE 4
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
#define RGB_MATRIX_LED_COUNT 108
#define RGB_TRIGGER_ON_KEYDOWN
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_KEYRELEASES

View File

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

View File

@@ -0,0 +1,290 @@
{
"keyboard_name": "5108",
"manufacturer": "Akko",
"url":"https://www.akkogear.com",
"maintainer": "jonylee@hfd",
"usb": {
"vid": "0xFFFE",
"pid": "0x000D",
"device_version": "1.0.3",
"suspend_wakeup_delay": 400,
"force_nkro": true
},
"processor": "WB32FQ95",
"bootloader": "wb32-dfu",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": [ "C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14"],
"rows": ["B15", "C6", "C7", "C8", "C9", "A8"]
},
"diode_direction": "ROW2COL",
"indicators": {
"num_lock": "A15",
"caps_lock": "C10"
},
"rgb_matrix": {
"driver": "IS31FL3733",
"max_brightness": 180,
"animations": {
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"rainbow_moving_chevron": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"raindrops": true,
"typing_heatmap": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"multisplash": true
},
"layout":[
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 },
{ "flags": 4, "matrix": [0, 2], "x": 30, "y": 0 },
{ "flags": 4, "matrix": [0, 3], "x": 40, "y": 0 },
{ "flags": 4, "matrix": [0, 4], "x": 50, "y": 0 },
{ "flags": 4, "matrix": [0, 5], "x": 70, "y": 0 },
{ "flags": 4, "matrix": [0, 6], "x": 80, "y": 0 },
{ "flags": 4, "matrix": [0, 7], "x": 90, "y": 0 },
{ "flags": 4, "matrix": [0, 8], "x": 100, "y": 0 },
{ "flags": 4, "matrix": [0, 9], "x": 110, "y": 0 },
{ "flags": 4, "matrix": [0, 10], "x": 120, "y": 0 },
{ "flags": 4, "matrix": [0, 11], "x": 130, "y": 0 },
{ "flags": 4, "matrix": [0, 12], "x": 140, "y": 0 },
{ "flags": 4, "matrix": [0, 14], "x": 156, "y": 0 },
{ "flags": 4, "matrix": [0, 15], "x": 166, "y": 0 },
{ "flags": 4, "matrix": [0, 16], "x": 176, "y": 0 },
{ "flags": 4, "matrix": [0, 17], "x": 194, "y": 0 },
{ "flags": 4, "matrix": [0, 18], "x": 204, "y": 0 },
{ "flags": 4, "matrix": [0, 19], "x": 214, "y": 0 },
{ "flags": 4, "matrix": [0, 20], "x": 224, "y": 0 },
{ "flags": 4, "matrix": [1, 0], "x": 0, "y": 13 },
{ "flags": 4, "matrix": [1, 1], "x": 10, "y": 13 },
{ "flags": 4, "matrix": [1, 2], "x": 20, "y": 13 },
{ "flags": 4, "matrix": [1, 3], "x": 30, "y": 13 },
{ "flags": 4, "matrix": [1, 4], "x": 40, "y": 13 },
{ "flags": 4, "matrix": [1, 5], "x": 50, "y": 13 },
{ "flags": 4, "matrix": [1, 6], "x": 60, "y": 13 },
{ "flags": 4, "matrix": [1, 7], "x": 70, "y": 13 },
{ "flags": 4, "matrix": [1, 8], "x": 80, "y": 13 },
{ "flags": 4, "matrix": [1, 9], "x": 90, "y": 13 },
{ "flags": 4, "matrix": [1, 10], "x": 100, "y": 13 },
{ "flags": 4, "matrix": [1, 11], "x": 110, "y": 13 },
{ "flags": 4, "matrix": [1, 12], "x": 120, "y": 13 },
{ "flags": 4, "matrix": [1, 13], "x": 140, "y": 13 },
{ "flags": 4, "matrix": [1, 14], "x": 156, "y": 13 },
{ "flags": 4, "matrix": [1, 15], "x": 166, "y": 13 },
{ "flags": 4, "matrix": [1, 16], "x": 176, "y": 13 },
{ "flags": 4, "matrix": [1, 17], "x": 194, "y": 13 },
{ "flags": 4, "matrix": [1, 18], "x": 204, "y": 13 },
{ "flags": 4, "matrix": [1, 19], "x": 214, "y": 13 },
{ "flags": 4, "matrix": [1, 20], "x": 224, "y": 13 },
{ "flags": 4, "matrix": [2, 0], "x": 0, "y": 26 },
{ "flags": 4, "matrix": [2, 1], "x": 10, "y": 26 },
{ "flags": 4, "matrix": [2, 2], "x": 20, "y": 26 },
{ "flags": 4, "matrix": [2, 3], "x": 30, "y": 26 },
{ "flags": 4, "matrix": [2, 4], "x": 40, "y": 26 },
{ "flags": 4, "matrix": [2, 5], "x": 50, "y": 26 },
{ "flags": 4, "matrix": [2, 6], "x": 60, "y": 26 },
{ "flags": 4, "matrix": [2, 7], "x": 70, "y": 26 },
{ "flags": 4, "matrix": [2, 8], "x": 80, "y": 26 },
{ "flags": 4, "matrix": [2, 9], "x": 90, "y": 26 },
{ "flags": 4, "matrix": [2, 10], "x": 100, "y": 26 },
{ "flags": 4, "matrix": [2, 11], "x": 110, "y": 26 },
{ "flags": 4, "matrix": [2, 12], "x": 128, "y": 26 },
{ "flags": 4, "matrix": [2, 13], "x": 140, "y": 26 },
{ "flags": 4, "matrix": [2, 14], "x": 156, "y": 26 },
{ "flags": 4, "matrix": [2, 15], "x": 166, "y": 26 },
{ "flags": 4, "matrix": [2, 16], "x": 176, "y": 26 },
{ "flags": 4, "matrix": [2, 17], "x": 194, "y": 26 },
{ "flags": 4, "matrix": [2, 18], "x": 204, "y": 26 },
{ "flags": 4, "matrix": [2, 19], "x": 214, "y": 26 },
{ "flags": 4, "matrix": [2, 20], "x": 224, "y": 26 },
{ "flags": 4, "matrix": [3, 0], "x": 0, "y": 38 },
{ "flags": 4, "matrix": [3, 1], "x": 10, "y": 38 },
{ "flags": 4, "matrix": [3, 2], "x": 20, "y": 38 },
{ "flags": 4, "matrix": [3, 3], "x": 30, "y": 38 },
{ "flags": 4, "matrix": [3, 4], "x": 40, "y": 38 },
{ "flags": 4, "matrix": [3, 5], "x": 50, "y": 38 },
{ "flags": 4, "matrix": [3, 6], "x": 60, "y": 38 },
{ "flags": 4, "matrix": [3, 7], "x": 70, "y": 38 },
{ "flags": 4, "matrix": [3, 8], "x": 80, "y": 38 },
{ "flags": 4, "matrix": [3, 9], "x": 90, "y": 38 },
{ "flags": 4, "matrix": [3, 10], "x": 100, "y": 38 },
{ "flags": 4, "matrix": [3, 11], "x": 110, "y": 38 },
{ "flags": 4, "matrix": [3, 13], "x": 135, "y": 38 },
{ "flags": 4, "matrix": [3, 17], "x": 194, "y": 38 },
{ "flags": 4, "matrix": [3, 18], "x": 204, "y": 38 },
{ "flags": 4, "matrix": [3, 19], "x": 214, "y": 38 },
{ "flags": 4, "matrix": [4, 0], "x": 5, "y": 51 },
{ "flags": 4, "matrix": [4, 1], "x": 20, "y": 51 },
{ "flags": 4, "matrix": [4, 2], "x": 30, "y": 51 },
{ "flags": 4, "matrix": [4, 3], "x": 40, "y": 51 },
{ "flags": 4, "matrix": [4, 4], "x": 50, "y": 51 },
{ "flags": 4, "matrix": [4, 5], "x": 60, "y": 51 },
{ "flags": 4, "matrix": [4, 6], "x": 70, "y": 51 },
{ "flags": 4, "matrix": [4, 7], "x": 80, "y": 51 },
{ "flags": 4, "matrix": [4, 8], "x": 90, "y": 51 },
{ "flags": 4, "matrix": [4, 9], "x": 100, "y": 51 },
{ "flags": 4, "matrix": [4, 10], "x": 110, "y": 51 },
{ "flags": 4, "matrix": [4, 13], "x": 135, "y": 51 },
{ "flags": 4, "matrix": [4, 15], "x": 166, "y": 51 },
{ "flags": 4, "matrix": [4, 17], "x": 194, "y": 51 },
{ "flags": 4, "matrix": [4, 18], "x": 204, "y": 51 },
{ "flags": 4, "matrix": [4, 19], "x": 214, "y": 51 },
{ "flags": 4, "matrix": [4, 20], "x": 224, "y": 51 },
{ "flags": 4, "matrix": [5, 0], "x": 0, "y": 64 },
{ "flags": 4, "matrix": [5, 1], "x": 10, "y": 64 },
{ "flags": 4, "matrix": [5, 2], "x": 20, "y": 64 },
{ "flags": 4, "matrix": [5, 5], "x": 60, "y": 64 },
{ "flags": 4, "matrix": [5, 9], "x": 100, "y": 64 },
{ "flags": 4, "matrix": [5, 10], "x": 110, "y": 64 },
{ "flags": 4, "matrix": [5, 11], "x": 130, "y": 64 },
{ "flags": 4, "matrix": [5, 13], "x": 140, "y": 64 },
{ "flags": 4, "matrix": [5, 14], "x": 156, "y": 64 },
{ "flags": 4, "matrix": [5, 15], "x": 166, "y": 64 },
{ "flags": 4, "matrix": [5, 16], "x": 176, "y": 64 },
{ "flags": 4, "matrix": [5, 18], "x": 199, "y": 64 },
{ "flags": 4, "matrix": [5, 19], "x": 214, "y": 64 }
]
},
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "F1", "matrix": [0, 1], "x": 2, "y": 0 },
{ "label": "F2", "matrix": [0, 2], "x": 3, "y": 0 },
{ "label": "F3", "matrix": [0, 3], "x": 4, "y": 0 },
{ "label": "F4", "matrix": [0, 4], "x": 5, "y": 0 },
{ "label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0 },
{ "label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0 },
{ "label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0 },
{ "label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0 },
{ "label": "F9", "matrix": [0, 9], "x": 11, "y": 0 },
{ "label": "F10", "matrix": [0, 10], "x": 12, "y": 0 },
{ "label": "F11", "matrix": [0, 11], "x": 13, "y": 0 },
{ "label": "F12", "matrix": [0, 12], "x": 14, "y": 0 },
{ "label": "PrtSc", "matrix": [0, 14], "x": 15.25, "y": 0 },
{ "label": "ScrLk", "matrix": [0, 15], "x": 16.25, "y": 0 },
{ "label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0 },
{ "label": "Cal", "matrix": [0, 17], "x": 18.5, "y": 0 },
{ "label": "Mute", "matrix": [0, 18], "x": 19.5, "y": 0 },
{ "label": "Vold", "matrix": [0, 19], "x": 20.5, "y": 0 },
{ "label": "Volu", "matrix": [0, 20], "x": 21.5, "y": 0 },
{ "label": "~", "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "label": "!", "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "label": "@", "matrix": [1, 2], "x": 2, "y": 1.25 },
{ "label": "#", "matrix": [1, 3], "x": 3, "y": 1.25 },
{ "label": "$", "matrix": [1, 4], "x": 4, "y": 1.25 },
{ "label": "%", "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "label": "^", "matrix": [1, 6], "x": 6, "y": 1.25 },
{ "label": "&", "matrix": [1, 7], "x": 7, "y": 1.25 },
{ "label": "*", "matrix": [1, 8], "x": 8, "y": 1.25 },
{ "label": "(", "matrix": [1, 9], "x": 9, "y": 1.25 },
{ "label": ")", "matrix": [1, 10], "x": 10, "y": 1.25 },
{ "label": "_", "matrix": [1, 11], "x": 11, "y": 1.25 },
{ "label": "+", "matrix": [1, 12], "x": 12, "y": 1.25 },
{ "label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2 },
{ "label": "Ins", "matrix": [1, 14], "x": 15.25, "y": 1.25 },
{ "label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25 },
{ "label": "PgUp", "matrix": [1, 16], "x": 17.25, "y": 1.25 },
{ "label": "Num", "matrix": [1, 17], "x": 18.5, "y": 1.25 },
{ "label": "/", "matrix": [1, 18], "x": 19.5, "y": 1.25 },
{ "label": "*", "matrix": [1, 19], "x": 20.5, "y": 1.25 },
{ "label": "-", "matrix": [1, 20], "x": 21.5, "y": 1.25 },
{ "label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5 },
{ "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{ "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{ "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{ "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{ "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{ "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{ "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{ "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{ "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 },
{ "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 },
{ "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 },
{ "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 },
{ "label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5 },
{ "label": "Del", "matrix": [2, 14], "x": 15.25, "y": 2.25 },
{ "label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25 },
{ "label": "PgDn", "matrix": [2, 16], "x": 17.25, "y": 2.25 },
{ "label": "7", "matrix": [2, 17], "x": 18.5, "y": 2.25 },
{ "label": "8", "matrix": [2, 18], "x": 19.5, "y": 2.25 },
{ "label": "9", "matrix": [2, 19], "x": 20.5, "y": 2.25 },
{ "label": "+", "matrix": [2, 20], "x": 21.5, "y": 2.25, "h": 2 },
{ "label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 },
{ "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{ "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{ "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{ "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{ "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{ "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{ "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{ "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{ "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 },
{ "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 },
{ "label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25 },
{ "label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25 },
{ "label": "4", "matrix": [3, 17], "x": 18.5, "y": 3.25 },
{ "label": "5", "matrix": [3, 18], "x": 19.5, "y": 3.25 },
{ "label": "6", "matrix": [3, 19], "x": 20.5, "y": 3.25 },
{ "label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 },
{ "label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25 },
{ "label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25 },
{ "label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25 },
{ "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 },
{ "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 },
{ "label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25 },
{ "label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25 },
{ "label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25 },
{ "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 },
{ "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 },
{ "label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75 },
{ "label": "Up", "matrix": [4, 15], "x": 16.25, "y": 4.25 },
{ "label": "1", "matrix": [4, 17], "x": 18.5, "y": 4.25 },
{ "label": "2", "matrix": [4, 18], "x": 19.5, "y": 4.25 },
{ "label": "3", "matrix": [4, 19], "x": 20.5, "y": 4.25 },
{ "label": "Enter", "matrix": [4, 20], "x": 21.5, "y": 4.25, "h": 2 },
{ "label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 },
{ "label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 },
{ "label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 },
{ "label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25 },
{ "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25 },
{ "label": "Win", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25 },
{ "label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25 },
{ "label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25 },
{ "label": "Left", "matrix": [5, 14], "x": 15.25, "y": 5.25 },
{ "label": "Down", "matrix": [5, 15], "x": 16.25, "y": 5.25 },
{ "label": "Right", "matrix": [5, 16], "x": 17.25, "y": 5.25 },
{ "label": "0", "matrix": [5, 18], "x": 18.5, "y": 5.25, "w": 2 },
{ "label": ".", "matrix": [5, 19], "x": 20.5, "y": 5.25 }
]
}
}
}

View File

@@ -0,0 +1,79 @@
/* Copyright (C) 2023 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum __layers {
WIN_B,
WIN_W,
WIN_FN,
MAC_B,
MAC_W,
MAC_FN
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_B] = LAYOUT( /* Base */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_W] = LAYOUT( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D, _______, _______),
[WIN_FN] = LAYOUT( /* FN */
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______,TG(WIN_W),_______,_______,_______,_______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______),
[MAC_B] = LAYOUT( /* Base */
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_W] = LAYOUT( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D, _______, _______),
[MAC_FN] = LAYOUT( /* FN */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______,TG(MAC_W),_______,_______,_______,_______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______)
};
// clang-format on

View File

@@ -0,0 +1,79 @@
/* Copyright (C) 2023 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum __layers {
WIN_B,
WIN_W,
WIN_FN,
MAC_B,
MAC_W,
MAC_FN
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_B] = LAYOUT( /* Base */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_W] = LAYOUT( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D, _______, _______),
[WIN_FN] = LAYOUT( /* FN */
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______,TG(WIN_W),_______,_______,_______,_______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______),
[MAC_B] = LAYOUT( /* Base */
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_W] = LAYOUT( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D, _______, _______),
[MAC_FN] = LAYOUT( /* FN */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______,TG(MAC_W),_______,_______,_______,_______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______)
};
// clang-format on

View File

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

View File

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

View File

@@ -0,0 +1,20 @@
# 5108
A customizable 100% keyboard.
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
* Hardware Supported: Akko 5108
* Hardware Availability: [akko](https://www.akkogear.com/)
Make example for this keyboard (after setting up your build environment):
make akko/5108:default
Flashing example for this keyboard:
make akko/5108:default:flash
## Bootloader
**Reset Key**: Hold down the key located at *K000*, which programmed as *Esc* while plugging in the keyboard.
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).

View File

@@ -0,0 +1,2 @@
EEPROM_DRIVER = wear_leveling
WEAR_LEVELING_DRIVER = spi_flash

View File

@@ -0,0 +1,217 @@
/* Copyright (C) 2022 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
/*row0*/
{1, A_1, B_1, C_1},
{1, A_2, B_2, C_2},
{1, A_3, B_3, C_3},
{1, A_4, B_4, C_4},
{1, A_5, B_5, C_5},
{1, A_6, B_6, C_6},
{1, A_7, B_7, C_7},
{1, A_8, B_8, C_8},
{1, A_9, B_9, C_9},
{1, A_10, B_10, C_10},
{1, A_11, B_11, C_11},
{1, A_12, B_12, C_12},
{1, A_13, B_13, C_13},
{1, A_14, B_14, C_14},
{1, A_15, B_15, C_15},
{1, A_16, B_16, C_16},
/*row1*/
{0, A_1, B_1, C_1},
{0, A_2, B_2, C_2},
{0, A_3, B_3, C_3},
{0, A_4, B_4, C_4},
{0, A_5, B_5, C_5},
{0, A_6, B_6, C_6},
{0, A_7, B_7, C_7},
{0, A_8, B_8, C_8},
{0, A_9, B_9, C_9},
{0, A_10, B_10, C_10},
{0, A_11, B_11, C_11},
{0, A_12, B_12, C_12},
{0, A_13, B_13, C_13},
{0, A_14, B_14, C_14},
{1, D_1, E_1, F_1},
{1, D_2, E_2, F_2},
{1, D_3, E_3, F_3},
/*row2*/
{0, D_1, E_1, F_1},
{0, D_2, E_2, F_2},
{0, D_3, E_3, F_3},
{0, D_4, E_4, F_4},
{0, D_5, E_5, F_5},
{0, D_6, E_6, F_6},
{0, D_7, E_7, F_7},
{0, D_8, E_8, F_8},
{0, D_9, E_9, F_9},
{0, D_10, E_10, F_10},
{0, D_11, E_11, F_11},
{0, D_12, E_12, F_12},
{0, D_13, E_13, F_13},
{0, D_14, E_14, F_14},
{1, G_1, H_1, I_1},
{1, G_2, H_2, I_2},
{1, G_3, H_3, I_3},
/*row3*/
{0, G_1, H_1, I_1},
{0, G_2, H_2, I_2},
{0, G_3, H_3, I_3},
{0, G_4, H_4, I_4},
{0, G_5, H_5, I_5},
{0, G_6, H_6, I_6},
{0, G_7, H_7, I_7},
{0, G_8, H_8, I_8},
{0, G_9, H_9, I_9},
{0, G_10, H_10, I_10},
{0, G_11, H_11, I_11},
{0, G_12, H_12, I_12},
{0, G_13, H_13, I_13},
/*row4*/
{0, J_1, K_1, L_1},
{0, J_2, K_2, L_2},
{0, J_3, K_3, L_3},
{0, J_4, K_4, L_4},
{0, J_5, K_5, L_5},
{0, J_6, K_6, L_6},
{0, J_7, K_7, L_7},
{0, J_8, K_8, L_8},
{0, J_9, K_9, L_9},
{0, J_10, K_10, L_10},
{0, J_11, K_11, L_11},
{0, J_12, K_12, L_12},
{1, J_4, K_4, L_4},
/*row5*/
{0, J_13, K_13, L_13},
{0, J_14, K_14, L_14},
{0, J_15, K_15, L_15},
{0, J_16, K_16, L_16},
{0, G_14, H_14, I_14},
{0, G_15, H_15, I_15},
{0, G_16, H_16, I_16},
{0, D_15, E_15, F_15},
{1, J_1, K_1, L_1},
{1, J_2, K_2, L_2},
{1, J_3, K_3, L_3},
{2, J_12, K_12, L_12},
{2, J_11, K_11, L_11},
{2, J_10, K_10, L_10},
{2, J_9, K_9, L_9},
{2, J_8, K_8, L_8},
{2, J_7, K_7, L_7},
{2, J_6, K_6, L_6},
{2, J_5, K_5, L_5},
{2, J_4, K_4, L_4},
{2, J_3, K_3, L_3},
{2, J_2, K_2, L_2},
{2, J_1, K_1, L_1},
{2, G_12, H_12, I_12},
{2, G_11, H_11, I_11},
{2, G_10, H_10, I_10},
{2, G_9, H_9, I_9},
{2, A_1, B_1, C_1},
{2, G_8, H_8, I_8},
{2, A_2, B_2, C_2},
{2, G_7, H_7, I_7},
{2, A_3, B_3, C_3},
{2, G_6, H_6, I_6},
{2, A_4, B_4, C_4},
{2, G_5, H_5, I_5},
{2, A_5, B_5, C_5},
{2, G_4, H_4, I_4},
{2, A_6, B_6, C_6},
{2, G_3, H_3, I_3},
{2, A_7, B_7, C_7},
{2, G_2, H_2, I_2},
{2, A_8, B_8, C_8},
{2, A_9, B_9, C_9},
{2, A_10, B_10, C_10},
{2, A_11, B_11, C_11},
{2, A_12, B_12, C_12},
{2, D_1, E_1, F_1},
{2, D_2, E_2, F_2},
{2, D_3, E_3, F_3},
{2, D_4, E_4, F_4},
{2, D_5, E_5, F_5},
{2, D_6, E_6, F_6},
{2, D_7, E_7, F_7},
{2, D_8, E_8, F_8},
{2, D_9, E_9, F_9},
{2, D_10, E_10, F_10},
{2, D_11, E_11, F_11},
{2, D_12, E_12, F_12},
{2, G_1, H_1, I_1},
};
// clang-format on
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)
{
if (!rgb_matrix_indicators_advanced_user(led_min, led_max))
{
return false;
}
if (host_keyboard_led_state().caps_lock)
{
RGB_MATRIX_INDICATOR_SET_COLOR(50, 255, 255, 255);
}
else
{
if (!rgb_matrix_get_flags())
{
RGB_MATRIX_INDICATOR_SET_COLOR(50, 0, 0, 0);
}
}
if (keymap_config.no_gui)
{
RGB_MATRIX_INDICATOR_SET_COLOR(77, 255, 255, 255);
}
else
{
if (!rgb_matrix_get_flags())
{
RGB_MATRIX_INDICATOR_SET_COLOR(77, 0, 0, 0);
}
}
return true;
}
#endif

View File

@@ -0,0 +1,53 @@
/* Copyright (C) 2022 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Use 5 dynamic keymap layers */
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
/* 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
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
#define SPI_MOSI_PIN B5
#define SPI_MISO_PIN B4
#define SPI_MOSI_PAL_MODE 5
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
/* I2C Config for LED Driver */
#define DRIVER_COUNT 3
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110111
#define DRIVER_ADDR_3 0b1110110
#define I2C1_SCL_PAL_MODE 4
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
#define RGB_MATRIX_LED_COUNT 135
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_TRIGGER_ON_KEYDOWN
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_KEYRELEASES

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