Compare commits

..

41 Commits

Author SHA1 Message Date
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
151 changed files with 5524 additions and 585 deletions

View File

@@ -31,7 +31,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,9 +4,16 @@ 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:
@@ -18,7 +25,6 @@ jobs:
strategy:
fail-fast: false
matrix:
branch: [master, develop]
keymap: [default, via]
container: qmkfm/qmk_cli
@@ -30,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
@@ -50,7 +56,7 @@ jobs:
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
@@ -65,4 +71,4 @@ jobs:
DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }}
run: |
python3 -m pip install -r requirements.txt
python3 ./discord-results.py --branch ${{ matrix.branch }} --keymap ${{ matrix.keymap }} --url ${{ env.GITHUB_SERVER_URL }}/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }}
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 }}

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

@@ -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

@@ -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

@@ -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

@@ -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

@@ -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

@@ -5,9 +5,9 @@
"maintainer": "SamuraiKek",
"debounce": 2,
"usb": {
"vid": "0xFEED",
"pid": "0x0000",
"device_version": "0.0.2"
"vid": "0x424D",
"pid": "0x4D4E",
"device_version": "1.0.0"
},
"split": {
"soft_serial_pin": "D0"
@@ -16,7 +16,7 @@
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
"layout": [
"layout": [
{"label":"Esc", "x":0, "y":0.75},
{"label":"1", "x":1, "y":0.5},
{"label":"2", "x":2, "y":0.25},

View File

@@ -16,4 +16,3 @@
#pragma once
#define EE_HANDS

View File

@@ -15,13 +15,13 @@
*/
#include QMK_KEYBOARD_H
enum custom_keycodes {
_QWERTY,
_LOWER
enum custom_layers {
_QWERTY,
_LOWER
};
#define LOWER MO(_LOWER)
/*
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05,
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15,
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_LCTL, KC_HOME, KC_INS, KC_DEL, KC_LGUI, KC_SPC, KC_LALT, KC_ENT, KC_BSPC, LOWER, KC_LBRC, KC_RBRC, KC_END, KC_GRV
KC_LCTL, KC_HOME, KC_INS, KC_DEL, KC_LGUI, KC_SPC, KC_LALT, KC_ENT, KC_BSPC, LOWER, KC_LBRC, KC_RBRC, KC_END, KC_GRV
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
),

View File

@@ -0,0 +1,76 @@
/* Copyright 2021 SamuraiKek
*
* 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 custom_layers {
_QWERTY,
_FN1
};
#define FN1 MO(_FN1)
/*
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05,
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15,
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25,
L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35,
L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46,
[_UNIVERSAL] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
)
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_LCTL, KC_HOME, KC_INS, KC_DEL, KC_LGUI, KC_SPC, KC_LALT, KC_ENT, KC_BSPC, FN1, KC_LBRC, KC_RBRC, KC_END, KC_GRV
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
),
[_FN1] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, QK_BOOT, _______, _______, _______, KC_UP, _______, KC_MPLY, KC_F12,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT,KC_VOLD, KC_VOLU,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MPRV, KC_MNXT, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
)
};

View File

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

View File

@@ -0,0 +1,36 @@
/* Copyright 2023 Finalkey
* Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK>
*
* 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
/* 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 FORCE_NKRO
// The pin connected to the data pin of the LEDs
#define RGB_DI_PIN D7
// The number of LEDs connected
#define RGB_MATRIX_LED_COUNT 66
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_KEYRELEASES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_DISABLE_AFTER_TIMEOUT 0
#define RGB_MATRIX_LED_FLUSH_LIMIT 16
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200

View File

@@ -0,0 +1,54 @@
/* Copyright 2023 Finalkey
* Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = {
{
{0, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
{NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NO_LED, NO_LED},
{28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, NO_LED, NO_LED},
{29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, NO_LED, 41, 14, 42},
{55, NO_LED, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, NO_LED, 44, 43, NO_LED},
{56, 57, 58, NO_LED, NO_LED, NO_LED, 59, NO_LED, NO_LED, 60, 61, NO_LED, 62, 63, 64, 65}
}, {
{14, 0}, {28, 0}, {42, 0}, {56, 0}, {70, 0}, {84, 0}, {98, 0}, {112, 0}, {126, 0}, {140, 0}, {154, 0}, {168, 0}, {182, 0},{196, 0},
{224, 16},{196, 16},{182, 16},{168, 16},{154, 16},{140, 16},{126, 16},{112, 16}, {98, 16}, {84, 16}, {70, 16}, {56, 16}, {42, 16} ,{28, 16}, {14, 16},
{14, 32}, {28, 32}, {42, 32}, {56, 32}, {70, 32}, {84, 32}, {98, 32}, {112, 32}, {126, 32}, {140, 32}, {154, 32}, {168, 32}, {196, 32}, {224, 32},
{224, 48}, {196, 48},{168, 48},{154, 48},{140, 48},{126, 48},{112, 48}, {98, 48}, {84, 48}, {70, 48}, {56, 48}, {42, 48}, {14, 48},
{14, 64}, {28, 64}, {42, 64}, {98, 64}, {140, 64}, {154, 64}, {168, 64}, {182, 64},{196, 64}, {224, 64}
}, {
4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4
}
};
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(29, 255, 255, 255);
}
return true;
}
#endif

View File

@@ -0,0 +1,137 @@
{
"keyboard_name": "DYMIUM65",
"manufacturer": "RDR",
"url": "https://github.com/LiuLiuQMK",
"maintainer": "LiWenLiu",
"usb": {
"vid": "0x5678",
"pid": "0x5058",
"device_version": "0.0.1"
},
"diode_direction": "ROW2COL",
"matrix_pins": {
"cols": ["E6", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5", "D4", "D6", "C6", "B4", "B5", "B6","E2"],
"rows": ["F7", "F6", "F5", "F4", "F1","F0"]
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"features": {
"bootmagic": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"mousekey": true,
"rgb_matrix": true
},
"build": {
"lto": true
},
"encoder": {
"enabled": true,
"rotary": [
{"pin_a": "C7", "pin_b": "D1"}
]
},
"rgb_matrix": {
"driver": "WS2812",
"animations": {
"breathing": true,
"band_val": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"rainbow_moving_chevron": true,
"cycle_out_in_dual": true,
"cycle_spiral": true,
"rainbow_beacon": true,
"rainbow_pinwheels": true,
"raindrops": true,
"pixel_flow": true,
"solid_reactive": true,
"solid_reactive_multiwide": true,
"solid_reactive_cross": true,
"solid_reactive_nexus": true,
"splash": true
}
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0 ], "x": 0, "y": 0},
{"matrix": [1, 1 ], "x": 1, "y": 0},
{"matrix": [1, 2 ], "x": 2, "y": 0},
{"matrix": [1, 3 ], "x": 3, "y": 0},
{"matrix": [1, 4 ], "x": 4, "y": 0},
{"matrix": [1, 5 ], "x": 5, "y": 0},
{"matrix": [1, 6 ], "x": 6, "y": 0},
{"matrix": [1, 7 ], "x": 7, "y": 0},
{"matrix": [1, 8 ], "x": 8, "y": 0},
{"matrix": [1, 9 ], "x": 9, "y": 0},
{"matrix": [1, 10], "x": 10, "y": 0},
{"matrix": [1, 11], "x": 11, "y": 0},
{"matrix": [1, 12], "x": 12, "y": 0},
{"matrix": [1, 13], "w": 2, "x": 13, "y": 0},
{"matrix": [4, 15], "x": 16, "y": 0},
{"matrix": [2, 0 ], "w": 1.5, "x": 0, "y": 1},
{"matrix": [2, 1 ], "x": 1.5, "y": 1},
{"matrix": [2, 2 ], "x": 2.5, "y": 1},
{"matrix": [2, 3 ], "x": 3.5, "y": 1},
{"matrix": [2, 4 ], "x": 4.5, "y": 1},
{"matrix": [2, 5 ], "x": 5.5, "y": 1},
{"matrix": [2, 6 ], "x": 6.5, "y": 1},
{"matrix": [2, 7 ], "x": 7.5, "y": 1},
{"matrix": [2, 8 ], "x": 8.5, "y": 1},
{"matrix": [2, 9 ], "x": 9.5, "y": 1},
{"matrix": [2, 10], "x": 10.5, "y": 1},
{"matrix": [2, 11], "x": 11.5, "y": 1},
{"matrix": [2, 12], "x": 12.5, "y": 1},
{"matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 1},
{"matrix": [3, 14], "x": 16, "y": 1},
{"matrix": [3, 0 ], "w": 1.75, "x": 0, "y": 2},
{"matrix": [3, 1 ], "x": 1.75, "y": 2},
{"matrix": [3, 2 ], "x": 2.75, "y": 2},
{"matrix": [3, 3 ], "x": 3.75, "y": 2},
{"matrix": [3, 4 ], "x": 4.75, "y": 2},
{"matrix": [3, 5 ], "x": 5.75, "y": 2},
{"matrix": [3, 6 ], "x": 6.75, "y": 2},
{"matrix": [3, 7 ], "x": 7.75, "y": 2},
{"matrix": [3, 8 ], "x": 8.75, "y": 2},
{"matrix": [3, 9 ], "x": 9.75, "y": 2},
{"matrix": [3, 10], "x": 10.75, "y": 2},
{"matrix": [3, 11], "x": 11.75, "y": 2},
{"matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 2},
{"matrix": [3, 15], "x": 16, "y": 2},
{"matrix": [4, 0 ], "w": 2.25, "x": 0, "y": 3},
{"matrix": [4, 2 ], "x": 2.25, "y": 3},
{"matrix": [4, 3 ], "x": 3.25, "y": 3},
{"matrix": [4, 4 ], "x": 4.25, "y": 3},
{"matrix": [4, 5 ], "x": 5.25, "y": 3},
{"matrix": [4, 6 ], "x": 6.25, "y": 3},
{"matrix": [4, 7 ], "x": 7.25, "y": 3},
{"matrix": [4, 8 ], "x": 8.25, "y": 3},
{"matrix": [4, 9 ], "x": 9.25, "y": 3},
{"matrix": [4, 10], "x": 10.25, "y": 3},
{"matrix": [4, 11], "x": 11.25, "y": 3},
{"matrix": [4, 13], "w": 1.75, "x": 12.25, "y": 3},
{"matrix": [4, 14], "x": 15.25, "y": 3},
{"matrix": [5, 0 ], "w": 1.25, "x": 0, "y": 4},
{"matrix": [5, 1 ], "w": 1.25, "x": 1.25, "y": 4},
{"matrix": [5, 2 ], "w": 1.25, "x": 2.5, "y": 4},
{"matrix": [5, 6 ], "w": 6.25, "x": 3.75, "y": 4},
{"matrix": [5, 9 ], "x": 10, "y": 4},
{"matrix": [5, 10], "x": 11, "y": 4},
{"matrix": [5, 12], "x": 12, "y": 4},
{"matrix": [5, 13], "x": 14.25, "y": 4},
{"matrix": [5, 14], "x": 15.25, "y": 4},
{"matrix": [5, 15], "x": 16.25, "y": 4}
]
}
}
}

View File

@@ -0,0 +1,71 @@
/* Copyright 2023 Finalkey
* Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK>
*
* 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
// Layer names
enum ats_layers{
// - Base layer:
_BASE,
// - Symbols, numbers, and functions:
_FN,
// - Alternate Function layer:
_LN,
// - Alternate Function layer:
_MT
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_AUDIO_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_PAGE_UP,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_PAGE_DOWN,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, KC_UP,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, MO(_FN), KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_FN] = LAYOUT(
KC_GRAVE, 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_BACKSPACE, KC_TRNS,
RGB_TOG, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RGB_HUI, RGB_HUD, KC_BACKSLASH, KC_TRNS,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RGB_SAD, RGB_SAI, KC_ENTER, KC_TRNS,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, MO(_LN), KC_SLASH, KC_RIGHT_SHIFT, RGB_VAI,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, RGB_MOD, _______, KC_RIGHT_CTRL, RGB_SPD, RGB_VAD, RGB_SPI
),
[_LN] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, MO(_MT), _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_MT] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, _______, _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP) },
[_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[_LN] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
[_MT] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
};
#endif

View File

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

View File

@@ -0,0 +1,71 @@
/* Copyright 2023 Finalkey
* Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK>
*
* 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
// Layer names
enum ats_layers{
// - Base layer:
_BASE,
// - Symbols, numbers, and functions:
_FN,
// - Alternate Function layer:
_LN,
// - Alternate Function layer:
_MT
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_AUDIO_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_PAGE_UP,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_PAGE_DOWN,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, KC_UP,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, MO(_FN), KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_FN] = LAYOUT(
KC_GRAVE, 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_BACKSPACE, KC_TRNS,
RGB_TOG, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RGB_HUI, RGB_HUD, KC_BACKSLASH, KC_TRNS,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RGB_SAD, RGB_SAI, KC_ENTER, KC_TRNS,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, MO(_LN), KC_SLASH, KC_RIGHT_SHIFT, RGB_VAI,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, RGB_MOD, _______, KC_RIGHT_CTRL, RGB_SPD, RGB_VAD, RGB_SPI
),
[_LN] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, MO(_MT), _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_MT] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS,
KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS,
KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, _______, _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP,
KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP) },
[_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[_LN] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
[_MT] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
};
#endif

View File

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

View File

@@ -0,0 +1,27 @@
# dymium65
A customizable 65% encoder keyboard.
![dymium65](https://i.imgur.com/5qAl7hgh.png)
* Keyboard Maintainer: [LiWenLiu](https://github.com/LiuLiuQMK)
* Hardware Supported: dymium65 PCB with atmega32u4 microcontroller
* Hardware Availability: Coming soon
Make example for this keyboard (after setting up your build environment):
make dotmod/dymium65:default
Flashing example for this keyboard:
make dotmod/dymium65: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 top left key and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB
* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create.

View File

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

View File

@@ -16,7 +16,6 @@
# define RGB_MATRIX_LED_COUNT (58 + 53)
# define ISSI_PWM_FREQUENCY 0b010 // 26k
# define RGB_DISABLE_TIMEOUT 0
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
# define RGB_MATRIX_KEYPRESSES

View File

@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Cleanup RGB
#ifdef RGB_MATRIX_ENABLE
#define RGB_DISABLE_TIMEOUT 300000 // 5 minutes (5 * 60 * 1000ms)
#define RGB_MATRIX_TIMEOUT 300000 // 5 minutes (5 * 60 * 1000ms)
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain

View File

@@ -0,0 +1,17 @@
/* Copyright 2022 PHSC138
*
* 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 TAPPING_TERM 150 // Tap dance time limit

View File

@@ -0,0 +1,390 @@
/* Copyright 2022 PHSC138
*
* 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
// These are all aliases for the function layers.
enum custom_layers {
_BASE,
_PROG,
_GAME,
_FN,
_FN1,
_NUM
};
// Tap Dance
typedef struct {
char is_press_action;
int state;
} tap;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD = 2,
DOUBLE_TAP = 3,
DOUBLE_HOLD = 4,
DOUBLE_SINGLE_TAP = 5, // Send two single taps
TRIPLE_TAP = 6,
TRIPLE_HOLD = 7
};
// Tap dance enums
enum {
PN_SWAP = 0,
LAPO = 1,
LCPO = 2,
RAPC = 3,
RCPC = 4,
D20 = 5
};
enum custom_keycodes {
PROF_MAC = QK_USER
};
uint8_t cur_dance (tap_dance_state_t *state);
void pn_finished (tap_dance_state_t *state, void *user_data);
void pn_reset (tap_dance_state_t *state, void *user_data);
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// TREE: 'pn' to enter custom layers:
// _BASE
// _FN
// _FN1
// _NUM
// _PROG
// _PROG
// _FN
// _FN1
// _NUM
// _GAME
// _GAME
// _BASE
// Tap pn for toggle to _PROG, or hold for numpad
[_BASE] = LAYOUT_split_space(
QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_FN1),
KC_LCTL, KC_LGUI, KC_LALT, TD(PN_SWAP), KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_APP, KC_RCTL),
// LEFT AND RIGHT SHIFT: '(' and ')' when tapped, shift when held
// LEFT AND RIGHT CTRL: '{' and '}' when tapped, ctrl when held
// LEFT AND RIGHT ALT: '[' and ']' when tapped, ctrl when held
[_PROG] = LAYOUT_split_space(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
SC_LSPO, _______, _______, _______, _______, _______, _______, _______, _______, _______, SC_RSPC, _______,
TD(LCPO), _______, TD(LAPO), TO(_GAME), _______, _______, _______, TD(RAPC), _______, TD(RCPC)),
// Macro for right space is bhop
// Maco for 'fn' is move forward
// Macro for 'fn1' is spin constantly
// Macro for right shift is D20
[_GAME] = LAYOUT_split_space(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TD(D20), XXXXXXX,
_______, _______, _______, TO(_BASE), _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______),
[_FN] = LAYOUT_split_space(
_______, KC_VOLD, KC_VOLU, KC_MUTE, QK_RBT, _______, KC_CALC, KC_PGUP, _______, KC_PGDN, KC_PSCR, KC_SCRL, KC_PAUS,
KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_INS, _______,
_______, _______, _______, _______, _______, KC_HOME, KC_END, BL_TOGG, BL_DOWN, BL_UP, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN1] = LAYOUT_split_space(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
_______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_NUM] = LAYOUT_split_space(
_______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, PROF_MAC, _______, _______,
_______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
_______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_DOT, _______, _______, _______,
_______, _______, _______, _______, _______, KC_0, _______, _______, DB_TOGG, QK_BOOT),
};
/*--- Profile Macro ---*/
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case PROF_MAC:
if (record->event.pressed) {
// When keycode PROF_MAC is pressed
SEND_STRING("if [ $shell = 'zsh' ]; then echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.zshrc\nclear; else echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.profile\nclear; fi\n");
} else {
// When keycode QMKBEST is released
}
break;
}
return true;
};
/*--- End Profile Macro ---*/
/* Return an integer that corresponds to what kind of tap dance should be executed.
*
* How to figure out tap dance state: interrupted and pressed.
*
* Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
* under the tapping term. This is typically indicitive that you are trying to "tap" the key.
*
* Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
* has ended, but the key is still being pressed down. This generally means the key is being "held".
*
* One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
* feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
* For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
*
* Good places to put an advanced tap dance:
* z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
*
* Criteria for "good placement" of a tap dance key:
* Not a key that is hit frequently in a sentence
* Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
* in a web form. So 'tab' would be a poor choice for a tap dance.
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
* letter 'p', the word 'pepper' would be quite frustating to type.
*
* For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
*
*/
uint8_t cur_dance(tap_dance_state_t *state) {
if(state->count == 1) {
if(state->interrupted || !state->pressed) return SINGLE_TAP;
//key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
else return SINGLE_HOLD;
} else if(state->count == 2) {
/*
* DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
* action when hitting 'pp'. Suggested use case for this return value is when you want to send two
* keystrokes of the key, and not the 'double tap' action/macro.
*/
if(state->interrupted) return DOUBLE_SINGLE_TAP;
else if(state->pressed) return DOUBLE_HOLD;
else return DOUBLE_TAP;
}
//Assumes no one is trying to type the same letter three times (at least not quickly).
//If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
//an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
if(state->count == 3) {
if(state->interrupted || !state->pressed) return TRIPLE_TAP;
else return TRIPLE_HOLD;
}
else return 8; //magic number. At some point this method will expand to work for more presses
}
//instanalize an instance of 'tap' for the 'pn' tap dance.
static tap pn_tap_state = {
.is_press_action = 1,
.state = 0
};
void pn_finished(tap_dance_state_t *state, void *user_data) {
pn_tap_state.state = cur_dance(state);
switch(pn_tap_state.state) {
case SINGLE_TAP: layer_on(_PROG); break;
case SINGLE_HOLD: layer_on(_NUM); break;
//case DOUBLE_TAP: register_code(KC_ESC); break;
//case DOUBLE_HOLD: register_code(KC_LALT); break;
//case DOUBLE_SINGLE_TAP: register_code(KC_X); unregister_code(KC_X); register_code(KC_X);
//Last case is for fast typing. Assuming your key is `f`:
//For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
//In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
}
}
void pn_reset(tap_dance_state_t *state, void *user_data) {
switch(pn_tap_state.state) {
//case SINGLE_TAP: unregister_code(KC_X); break;
case SINGLE_HOLD: layer_off(_NUM); break;
//case DOUBLE_TAP: unregister_code(KC_ESC); break;
//case DOUBLE_HOLD: unregister_code(KC_LALT);
//case DOUBLE_SINGLE_TAP: unregister_code(KC_X);
}
pn_tap_state.state = 0;
}
static tap lalt_tap_state = {
.is_press_action = 1,
.state = 0
};
void lalt_finished(tap_dance_state_t *state, void *user_data) {
lalt_tap_state.state = cur_dance(state);
switch(lalt_tap_state.state) {
case SINGLE_TAP: register_code(KC_LBRC); break;
case SINGLE_HOLD: register_code(KC_LALT); break;
}
}
void lalt_reset(tap_dance_state_t *state, void *user_data) {
switch(lalt_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_LBRC); break;
case SINGLE_HOLD: unregister_code(KC_LALT); break;
}
lalt_tap_state.state = 0;
}
static tap ralt_tap_state = {
.is_press_action = 1,
.state = 0
};
void ralt_finished(tap_dance_state_t *state, void *user_data) {
ralt_tap_state.state = cur_dance(state);
switch(ralt_tap_state.state) {
case SINGLE_TAP: register_code(KC_RBRC); break;
case SINGLE_HOLD: register_code(KC_RALT); break;
}
}
void ralt_reset(tap_dance_state_t *state, void *user_data) {
switch(ralt_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_RBRC); break;
case SINGLE_HOLD: unregister_code(KC_RALT); break;
}
ralt_tap_state.state = 0;
}
static tap rctl_tap_state = {
.is_press_action = 1,
.state = 0
};
void rctl_finished(tap_dance_state_t *state, void *user_data) {
rctl_tap_state.state = cur_dance(state);
switch(rctl_tap_state.state) {
case SINGLE_TAP: register_code(KC_RSFT); register_code(KC_RBRC); break;
case SINGLE_HOLD: register_code(KC_RCTL); break;
}
}
void rctl_reset(tap_dance_state_t *state, void *user_data) {
switch(rctl_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_RSFT); unregister_code(KC_RBRC); break;
case SINGLE_HOLD: unregister_code(KC_RCTL); break;
}
rctl_tap_state.state = 0;
}
static tap lctl_tap_state = {
.is_press_action = 1,
.state = 0
};
void lctl_finished(tap_dance_state_t *state, void *user_data) {
lctl_tap_state.state = cur_dance(state);
switch(lctl_tap_state.state) {
case SINGLE_TAP: register_code(KC_LSFT); register_code(KC_LBRC); break;
case SINGLE_HOLD: register_code(KC_LCTL); break;
}
}
void lctl_reset(tap_dance_state_t *state, void *user_data) {
switch(lctl_tap_state.state) {
case SINGLE_TAP: unregister_code(KC_LSFT); unregister_code(KC_LBRC); break;
case SINGLE_HOLD: unregister_code(KC_LCTL); break;
}
lctl_tap_state.state = 0;
}
static tap d20_tap_state = {
.is_press_action = 1,
.state = 0,
};
int d20_srand = 0;
uint32_t timer_seed;
void d20_finished(tap_dance_state_t *state, void *user_data) {
d20_tap_state.state = cur_dance(state);
switch(d20_tap_state.state) {
case SINGLE_HOLD: {
if(d20_srand == 0){
timer_seed = timer_read32();
srand((unsigned int)timer_seed);
d20_srand = 1;
}
SEND_STRING("Seed: ");
// uint32_t has max size of 4294967296
char SEED_STR_SIZE = 16;
// Initialize seed_str
char seed_str[SEED_STR_SIZE];
for (int iter=0;iter < SEED_STR_SIZE;iter++) seed_str[iter] = 0;
int i = SEED_STR_SIZE - 2; // Leave null byte on end of string
while (timer_seed && i >= 0) {
seed_str[i] = timer_seed % 10 + '0';
timer_seed /= 10;
i -= 1;
}
i++;
// Move all characters over i spaces
char move = i;
while (i < SEED_STR_SIZE -1) {
seed_str[i-move] = seed_str[i];
seed_str[i] = 0;
i += 1;
}
send_string(seed_str);
break;
// Else allow fall through
}
case SINGLE_TAP: {
if(d20_srand == 0){
timer_seed = timer_read();
srand((unsigned int)timer_seed);
d20_srand = 1;
}
unsigned char roll = rand() % 20 + 1;
char res[3];
res[0] = (char)((char)(roll / 10) + '0');
res[1] = (char)(roll % 10 + '0');
send_string(res);
break;
}
}
}
void d20_reset(tap_dance_state_t *state, void *user_data) {
d20_tap_state.state = 0;
}
tap_dance_action_t tap_dance_actions[] = {
[PN_SWAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, pn_finished, pn_reset),
[LAPO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lalt_finished, lalt_reset),
[RAPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ralt_finished, ralt_reset),
[LCPO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lctl_finished, lctl_reset),
[RCPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rctl_finished, rctl_reset),
[D20] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, d20_finished, d20_reset),
};

View File

@@ -0,0 +1,18 @@
# PHSC138's Layout for the atom47
## Base layer
The base layer is a standard vortex core layout
## Layer 1 (PROG)
This layer contains space cadet bindings to make programming easier. Ex: tapping left shift will input an open parenthesis
## Layer 2 (GAME)
This layer contains game specific macros, currently only a D20 has been implemented
## Layer 3 (FN)
This can be activated by pressing the `fn` key. This layer contains mostly the same bindings as the base vortex core except vim keybinds have replaced the arrow keys.
## Layer 4 (FN1)
This can be activated by pressing the `fn1` key. This is the default vortex core layer.
## Layer 5 (NUM)
This is a numpad that can be activated by holding the PN key. This also has some useful keys, such as `QC_BOOT`.

View File

@@ -0,0 +1,3 @@
MOUSEKEY_ENABLE = no
NKRO_ENABLE = yes
TAP_DANCE_ENABLE = yes

View File

@@ -2,7 +2,7 @@
"manufacturer": "Zach White",
"keyboard_name": "DirectPins ProMicro",
"maintainer": "skullydazed",
"bootloader": "atmel-dfu",
"development_board": "promicro",
"features": {
"bootmagic": true,
"extrakey": true,
@@ -22,7 +22,6 @@
["B5", "B6"]
]
},
"processor": "atmega32u4",
"usb": {
"device_version": "0.0.1",
"pid": "0x2320",

View File

@@ -30,15 +30,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
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_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
_______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD)
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
_______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
)
};

View File

@@ -24,28 +24,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
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_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap _FL: Function Layer
*/
[1] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
_______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD),
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
_______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______),
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______)
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -21,7 +21,7 @@
"usb": {
"device_version": "1.0.0",
"pid": "0x0001",
"vid": "0x4048"
"vid": "0x4069"
},
"layouts": {
"LAYOUT": {

View File

@@ -0,0 +1,108 @@
{
"keyboard_name": "Bahrnob65",
"manufacturer": "Kalakos",
"maintainer": "zykrah",
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"usb": {
"vid": "0x7A79",
"pid": "0x4261",
"device_version": "0.0.1"
},
"encoder": {
"rotary": [
{"pin_a": "D4", "pin_b": "D6"}
]
},
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"encoder": true
},
"diode_direction": "COL2ROW",
"matrix_pins": {
"rows": ["D7", "B4", "B5", "B6", "C6"],
"cols": ["F7", "F6", "F5", "F4", "F1", "F0", "B0", "B1", "B2", "B3", "D0", "D1", "D2", "D3", "D5"]
},
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6, "y": 0 },
{ "matrix": [0, 7], "x": 7, "y": 0 },
{ "matrix": [0, 8], "x": 8, "y": 0 },
{ "matrix": [0, 9], "x": 9, "y": 0 },
{ "matrix": [0, 10], "x": 10, "y": 0 },
{ "matrix": [0, 11], "x": 11, "y": 0 },
{ "matrix": [0, 12], "x": 12, "y": 0 },
{ "matrix": [0, 13], "x": 13, "y": 0 },
{ "matrix": [1, 14], "x": 14, "y": 0 },
{ "matrix": [0, 14], "x": 15.75, "y": 0 },
{ "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "matrix": [2, 14], "x": 15.5, "y": 1.5 },
{ "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 },
{ "matrix": [3, 14], "x": 15.5, "y": 2.5 },
{ "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
{ "matrix": [4, 4], "x": 2.25, "y": 3 },
{ "matrix": [3, 1], "x": 1.25, "y": 3 },
{ "matrix": [3, 2], "x": 3.25, "y": 3 },
{ "matrix": [3, 3], "x": 4.25, "y": 3 },
{ "matrix": [3, 4], "x": 5.25, "y": 3 },
{ "matrix": [3, 5], "x": 6.25, "y": 3 },
{ "matrix": [3, 6], "x": 7.25, "y": 3 },
{ "matrix": [3, 7], "x": 8.25, "y": 3 },
{ "matrix": [3, 8], "x": 9.25, "y": 3 },
{ "matrix": [3, 9], "x": 10.25, "y": 3 },
{ "matrix": [3, 10], "x": 11.25, "y": 3 },
{ "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 },
{ "matrix": [2, 13], "x": 14.25, "y": 3.25 },
{ "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
{ "matrix": [4, 3], "w": 3, "x": 3.75, "y": 4 },
{ "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "matrix": [4, 6], "w": 3.25, "x": 6.75, "y": 4 },
{ "matrix": [4, 10], "x": 10, "y": 4 },
{ "matrix": [4, 11], "x": 11, "y": 4 },
{ "matrix": [4, 12], "x": 12, "y": 4 },
{ "matrix": [3, 13], "x": 13.25, "y": 4.25 },
{ "matrix": [4, 13], "x": 14.25, "y": 4.25 },
{ "matrix": [4, 14], "x": 15.25, "y": 4.25 }
]
}
}
}

View File

@@ -0,0 +1,37 @@
/*
Copyright 2023 Zykrah
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(
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_DEL, KC_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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,63 @@
/*
Copyright 2023 Zykrah
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(
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_DEL, KC_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@@ -0,0 +1,27 @@
# BAHRNOB65
![BAHRNOB65](https://i.imgur.com/AK1ksQEh.jpeg)
Bahrnob 65: Gasket Mount 65%
* Keyboard Maintainer: [Zykrah](https://github.com/zykrah)
* Hardware Supported: Bahrnob65 Solder PCB
* Hardware Availability: N/A
Make example for this keyboard (after setting up your build environment):
make kalakos/bahrnob65:default
Flashing example for this keyboard:
make kalakos/bahrnob65:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the reset button on the back of the pcb
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

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

View File

@@ -0,0 +1,98 @@
/*
* Copyright 2023 KBDCraft
* Copyright 2023 Adophoxia <andyao1528@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"
#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
* | | | | */
{0, CS14_SW1, CS13_SW1, CS15_SW1},
{0, CS14_SW2, CS13_SW2, CS15_SW2},
{0, CS14_SW3, CS13_SW3, CS15_SW3},
{0, CS14_SW4, CS13_SW4, CS15_SW4},
{0, CS14_SW5, CS13_SW5, CS15_SW5},
{0, CS14_SW6, CS13_SW6, CS15_SW6},
{0, CS14_SW7, CS13_SW7, CS15_SW7},
{0, CS32_SW1, CS31_SW1, CS33_SW1},
{0, CS32_SW2, CS31_SW2, CS33_SW2},
{0, CS32_SW3, CS31_SW3, CS33_SW3},
{0, CS32_SW4, CS31_SW4, CS33_SW4},
{0, CS32_SW5, CS31_SW5, CS33_SW5},
{0, CS32_SW6, CS31_SW6, CS33_SW6},
{0, CS32_SW7, CS31_SW7, CS33_SW7},
{0, CS23_SW1, CS24_SW1, CS22_SW1},
{0, CS23_SW2, CS24_SW2, CS22_SW2},
{0, CS23_SW3, CS24_SW3, CS22_SW3},
{0, CS23_SW4, CS24_SW4, CS22_SW4},
{0, CS23_SW5, CS24_SW5, CS22_SW5},
{0, CS23_SW6, CS24_SW6, CS22_SW6},
{0, CS23_SW7, CS24_SW7, CS22_SW7},
{0, CS35_SW1, CS34_SW1, CS36_SW1},
{0, CS35_SW2, CS34_SW2, CS36_SW2},
{0, CS35_SW3, CS34_SW3, CS36_SW3},
{0, CS35_SW4, CS34_SW4, CS36_SW4},
{0, CS35_SW5, CS34_SW5, CS36_SW5},
{0, CS35_SW6, CS34_SW6, CS36_SW6},
{0, CS35_SW7, CS34_SW7, CS36_SW7},
{0, CS17_SW1, CS16_SW1, CS18_SW1},
{0, CS17_SW2, CS16_SW2, CS18_SW2},
{0, CS17_SW3, CS16_SW3, CS18_SW3},
{0, CS17_SW4, CS16_SW4, CS18_SW4},
{0, CS17_SW5, CS16_SW5, CS18_SW5},
{0, CS17_SW6, CS16_SW6, CS18_SW6},
{0, CS17_SW7, CS16_SW7, CS18_SW7},
{0, CS26_SW1, CS25_SW1, CS27_SW1},
{0, CS26_SW2, CS25_SW2, CS27_SW2},
{0, CS26_SW3, CS25_SW3, CS27_SW3},
{0, CS26_SW4, CS25_SW4, CS27_SW4},
{0, CS26_SW5, CS25_SW5, CS27_SW5},
{0, CS26_SW7, CS25_SW7, CS27_SW7},
{0, CS20_SW1, CS19_SW1, CS21_SW1},
{0, CS20_SW2, CS19_SW2, CS21_SW2},
{0, CS20_SW3, CS19_SW3, CS21_SW3},
{0, CS20_SW4, CS19_SW4, CS21_SW4},
{0, CS20_SW5, CS19_SW5, CS21_SW5},
{0, CS20_SW6, CS19_SW6, CS21_SW6},
{0, CS20_SW7, CS19_SW7, CS21_SW7},
{0, CS29_SW1, CS28_SW1, CS30_SW1},
{0, CS29_SW2, CS28_SW2, CS30_SW2},
{0, CS29_SW3, CS28_SW3, CS30_SW3},
{0, CS29_SW4, CS28_SW4, CS30_SW4},
{0, CS29_SW5, CS28_SW5, CS30_SW5},
{0, CS29_SW6, CS28_SW6, CS30_SW6},
{0, CS29_SW7, CS28_SW7, CS30_SW7},
{0, CS9_SW1, CS10_SW1, CS8_SW1},
{0, CS9_SW2, CS10_SW2, CS8_SW2},
{0, CS9_SW3, CS10_SW3, CS8_SW3},
{0, CS9_SW6, CS10_SW6, CS8_SW6},
{0, CS2_SW3, CS1_SW3, CS3_SW3},
{0, CS2_SW4, CS1_SW4, CS3_SW4},
{0, CS2_SW5, CS1_SW5, CS3_SW5},
{0, CS2_SW6, CS1_SW6, CS3_SW6},
{0, CS2_SW7, CS1_SW7, CS3_SW7}
};
#endif

View File

@@ -0,0 +1,34 @@
/*
* Copyright 2023 KBDCraft
* Copyright 2023 Adophoxia <andyao1528@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/>.
*/
#pragma once
#define I2C1_SCL_PIN B8
#define I2C1_SDA_PIN B9
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9
#define DRIVER_COUNT 1
#define DRIVER_ADDR_1 0b0110000
#define RGB_MATRIX_LED_COUNT 64
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES

View File

@@ -0,0 +1,23 @@
/*
* Copyright 2023 KBDCraft
* Copyright 2023 Adophoxia <andyao1528@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/>.
*/
#pragma once
#define HAL_USE_I2C TRUE
#include_next <halconf.h>

View File

@@ -0,0 +1,213 @@
{
"keyboard_name": "Adam64",
"manufacturer": "KBDCRAFT",
"url": "https://kbdcraft.store/products/adam",
"maintainer": "KBDCraft",
"usb": {
"vid": "0x586A",
"pid": "0xB001",
"device_version": "0.0.1"
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"diode_direction": "ROW2COL",
"matrix_pins": {
"rows": ["C8", "C9", "A8", "A10", "B14"],
"cols": ["B15", "C6", "C7", "A15", "B7", "C10", "C11", "C12", "D2", "B3", "B4", "B5", "A0", "A1"]
},
"features":{
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"nkro": true,
"console": false,
"command": false,
"rgb_matrix": true
},
"rgb_matrix":{
"driver": "IS31FL3741",
"max_brightness": 150,
"animations":{
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
"breathing": true,
"band_sat": true,
"band_val": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_spiral_sat": true,
"band_spiral_val": 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,
"rainbow_pinwheels": true,
"raindrops": true,
"jellybean_raindrops": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"pixel_rain": true,
"pixel_flow": true,
"pixel_fractal": true,
"typing_heatmap": true,
"digital_rain": true,
"splash": true,
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true
},
"layout": [
{"flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
{"flags": 4, "matrix": [0, 1], "x": 16, "y": 0 },
{"flags": 4, "matrix": [0, 2], "x": 32, "y": 0 },
{"flags": 4, "matrix": [0, 3], "x": 48, "y": 0 },
{"flags": 4, "matrix": [0, 4], "x": 64, "y": 0 },
{"flags": 4, "matrix": [0, 5], "x": 80, "y": 0 },
{"flags": 4, "matrix": [0, 6], "x": 96, "y": 0 },
{"flags": 4, "matrix": [0, 7], "x": 112, "y": 0 },
{"flags": 4, "matrix": [0, 8], "x": 128, "y": 0 },
{"flags": 4, "matrix": [0, 9], "x": 144, "y": 0 },
{"flags": 4, "matrix": [0, 10], "x": 160, "y": 0 },
{"flags": 4, "matrix": [0, 11], "x": 176, "y": 0 },
{"flags": 4, "matrix": [0, 12], "x": 192, "y": 0 },
{"flags": 4, "matrix": [0, 13], "x": 208, "y": 0 },
{"flags": 4, "matrix": [1, 0], "x": 0, "y": 10 },
{"flags": 4, "matrix": [1, 1], "x": 16, "y": 10 },
{"flags": 4, "matrix": [1, 2], "x": 32, "y": 10 },
{"flags": 4, "matrix": [1, 3], "x": 48, "y": 10 },
{"flags": 4, "matrix": [1, 4], "x": 64, "y": 10 },
{"flags": 4, "matrix": [1, 5], "x": 80, "y": 10 },
{"flags": 4, "matrix": [1, 6], "x": 96, "y": 10 },
{"flags": 4, "matrix": [1, 7], "x": 112, "y": 10 },
{"flags": 4, "matrix": [1, 8], "x": 128, "y": 10 },
{"flags": 4, "matrix": [1, 9], "x": 144, "y": 10 },
{"flags": 4, "matrix": [1, 10], "x": 160, "y": 10 },
{"flags": 4, "matrix": [1, 11], "x": 176, "y": 10 },
{"flags": 4, "matrix": [1, 12], "x": 192, "y": 10 },
{"flags": 4, "matrix": [1, 13], "x": 208, "y": 10 },
{"flags": 4, "matrix": [2, 0], "x": 0, "y": 20 },
{"flags": 4, "matrix": [2, 1], "x": 16, "y": 20 },
{"flags": 4, "matrix": [2, 2], "x": 32, "y": 20 },
{"flags": 4, "matrix": [2, 3], "x": 48, "y": 20 },
{"flags": 4, "matrix": [2, 4], "x": 64, "y": 20 },
{"flags": 4, "matrix": [2, 5], "x": 80, "y": 20 },
{"flags": 4, "matrix": [2, 6], "x": 96, "y": 20 },
{"flags": 4, "matrix": [2, 7], "x": 112, "y": 20 },
{"flags": 4, "matrix": [2, 8], "x": 128, "y": 20 },
{"flags": 4, "matrix": [2, 9], "x": 144, "y": 20 },
{"flags": 4, "matrix": [2, 10], "x": 160, "y": 20 },
{"flags": 4, "matrix": [2, 11], "x": 176, "y": 20 },
{"flags": 4, "matrix": [2, 13], "x": 208, "y": 20 },
{"flags": 4, "matrix": [3, 0], "x": 0, "y": 30 },
{"flags": 4, "matrix": [3, 1], "x": 16, "y": 30 },
{"flags": 4, "matrix": [3, 2], "x": 32, "y": 30 },
{"flags": 4, "matrix": [3, 3], "x": 48, "y": 30 },
{"flags": 4, "matrix": [3, 4], "x": 64, "y": 30 },
{"flags": 4, "matrix": [3, 5], "x": 80, "y": 30 },
{"flags": 4, "matrix": [3, 6], "x": 96, "y": 30 },
{"flags": 4, "matrix": [3, 7], "x": 112, "y": 30 },
{"flags": 4, "matrix": [3, 8], "x": 128, "y": 30 },
{"flags": 4, "matrix": [3, 9], "x": 144, "y": 30 },
{"flags": 4, "matrix": [3, 10], "x": 160, "y": 30 },
{"flags": 4, "matrix": [3, 11], "x": 176, "y": 30 },
{"flags": 4, "matrix": [3, 12], "x": 192, "y": 30 },
{"flags": 4, "matrix": [3, 13], "x": 208, "y": 30 },
{"flags": 4, "matrix": [4, 0], "x": 0, "y": 40 },
{"flags": 4, "matrix": [4, 1], "x": 16, "y": 40 },
{"flags": 4, "matrix": [4, 2], "x": 32, "y": 40 },
{"flags": 4, "matrix": [4, 5], "x": 80, "y": 40 },
{"flags": 4, "matrix": [4, 9], "x": 144, "y": 40 },
{"flags": 4, "matrix": [4, 10], "x": 160, "y": 40 },
{"flags": 4, "matrix": [4, 11], "x": 176, "y": 40 },
{"flags": 4, "matrix": [4, 12], "x": 192, "y": 40 },
{"flags": 4, "matrix": [4, 13], "x": 208, "y": 40 }
]
},
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6, "y": 0 },
{ "matrix": [0, 7], "x": 7, "y": 0 },
{ "matrix": [0, 8], "x": 8, "y": 0 },
{ "matrix": [0, 9], "x": 9, "y": 0 },
{ "matrix": [0, 10], "x": 10, "y": 0 },
{ "matrix": [0, 11], "x": 11, "y": 0 },
{ "matrix": [0, 12], "x": 12, "y": 0 },
{ "matrix": [0, 13], "w": 2, "x": 13, "y": 0 },
{ "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
{ "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
{ "matrix": [3, 0], "w": 2, "x": 0, "y": 3 },
{ "matrix": [3, 1], "x": 2, "y": 3 },
{ "matrix": [3, 2], "x": 3, "y": 3 },
{ "matrix": [3, 3], "x": 4, "y": 3 },
{ "matrix": [3, 4], "x": 5, "y": 3 },
{ "matrix": [3, 5], "x": 6, "y": 3 },
{ "matrix": [3, 6], "x": 7, "y": 3 },
{ "matrix": [3, 7], "x": 8, "y": 3 },
{ "matrix": [3, 8], "x": 9, "y": 3 },
{ "matrix": [3, 9], "x": 10, "y": 3 },
{ "matrix": [3, 10], "x": 11, "y": 3 },
{ "matrix": [3, 11], "x": 12, "y": 3 },
{ "matrix": [3, 12], "x": 13, "y": 3 },
{ "matrix": [3, 13], "x": 14, "y": 3 },
{ "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
{ "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
{ "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
{ "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
{ "matrix": [4, 9], "x": 10, "y": 4 },
{ "matrix": [4, 10], "x": 11, "y": 4 },
{ "matrix": [4, 11], "x": 12, "y": 4 },
{ "matrix": [4, 12], "x": 13, "y": 4 },
{ "matrix": [4, 13], "x": 14, "y": 4 }
]
}
}
}

View File

@@ -0,0 +1,37 @@
/*
* Copyright 2023 KBDCraft
* Copyright 2023 Adophoxia <andyao1528@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_64_ansi(
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_64_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
KC_NO, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SCRL, KC_PAUS, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SPI, RGB_SPD, KC_HOME, KC_PGUP, EE_CLR,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, NK_TOGG, KC_NO, KC_NO, KC_INS, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_MOD, KC_VOLD, RGB_TOG
)
};

View File

@@ -0,0 +1,37 @@
/*
* Copyright 2023 KBDCraft
* Copyright 2023 Adophoxia <andyao1528@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_64_ansi(
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_64_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SCRL, KC_PAUS, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, KC_HOME, KC_PGUP, EE_CLR,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_INS, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, RGB_MOD, KC_VOLD, RGB_TOG
)
};

View File

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

View File

@@ -0,0 +1,24 @@
/*
* Copyright 2023 KBDCraft
* Copyright 2023 Adophoxia <andyao1528@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/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_I2C_USE_I2C1
#define STM32_I2C_USE_I2C1 TRUE

View File

@@ -0,0 +1,27 @@
# KBDCraft Adam64
![Adam64](https://i.imgur.com/6m2yyTUh.jpg)
A custom 64-key mechanical keyboard comprised of Legos.
* Keyboard Maintainer: The QMK Community
* Hardware Supported: STM32F401
* Hardware Availability: https://kbdcraft.store/products/adam
Make example for this keyboard (after setting up your build environment):
make kbdcraft/adam64:default
Flashing example for this keyboard:
make kbdcraft/adam64:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -0,0 +1,2 @@
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

View File

@@ -1,5 +1,5 @@
/*
Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com>
Copyright 2023 John Stegeman
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
@@ -14,4 +14,15 @@ 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 "rev_a.h"
#pragma once
// #define USE_I2C
#define EE_HANDS
#define RGBLIGHT_LAYERS
#define TAPPING_TOGGLE 1 // tap just once for TT() to toggle the layer
#define TAPPING_TERM 200
#define IGNORE_MOD_TAP_INTERRUPT
#define RGBLIGHT_LAYERS_RETAIN_VAL

View File

@@ -0,0 +1,144 @@
/*
Copyright 2023 John Stegeman
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
#include "print.h"
#include "light_layers.h"
enum layers {
_COLEMAK,
_NAVNUM,
_CONTROL,
};
// Enter when tapped, shift when held
#define SHEN MT(MOD_LSFT, KC_ENT)
// Enter when tapped, alt when held
#define ALEN MT(MOD_LALT, KC_ENT)
#define CTX LT(0,KC_X)
#define CPC LT(0,KC_C)
#define PSV LT(0,KC_V)
// Space when tapped, shift when held
#define SHSP MT(MOD_RSFT, KC_SPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_COLEMAK] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_MINS, KC_SCLN,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, KC_Z, CTX, CPC, KC_D, PSV, KC_HOME, KC_RALT, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_EQL,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
MO(1), ALEN, KC_LGUI, KC_BSPC, SHSP, LT(2,KC_ENT)
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
),
[_NAVNUM] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, KC_DOWN, KC_LCBR, KC_END, KC_RALT, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
_______, _______, KC_DEL, KC_DEL, _______, KC_P0
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
),
[_CONTROL] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, KC_BSLS,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_LPRN, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LT(0,KC_X):
if (!record->tap.count && record->event.pressed) {
tap_code16(G(KC_X)); // Intercept hold function to send GUI-X
return false;
}
return true;
break;
case LT(0,KC_C):
if (!record->tap.count && record->event.pressed) {
tap_code16(G(KC_C)); // Intercept hold function to send GUI-C
return false;
}
return true;
break;
case LT(0,KC_V):
if (!record->tap.count && record->event.pressed) {
tap_code16(G(KC_V)); // Intercept hold function to send GUI-V
return false;
}
return true;
break;
}
return true;
}
// Key overrides
// GUI + esc = ~
const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, S(KC_GRV));
// Shift + esc = `
const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, KC_GRV);
// Shift + bkspc = delete word
const key_override_t shift_bkspc_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, A(KC_BSPC));
const key_override_t **key_overrides = (const key_override_t *[]){
&tilde_esc_override,
&grave_esc_override,
// &shift_bkspc_override,
NULL
};
void keyboard_post_init_user(void) {
rgblight_layers = MY_LIGHT_LAYERS;
}
layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(_COLEMAK, layer_state_cmp(state, _COLEMAK));
rgblight_set_layer_state(_NAVNUM, layer_state_cmp(state, _NAVNUM));
return state;
}

View File

@@ -0,0 +1,83 @@
/*
Copyright 2023 John Stegeman
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/*
LED index mapping:
(31) (32) (33) (67) (66) (65)
┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
│0 │1 │2 │3 │4 │5 │ │39 │38 │37 │36 │35 │34 │
├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
│11 │10 │9 │8 │7 │6 │ │40 │41 │42 │43 │44 │45 │
├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
│12 │13 │14 │15 │16 │17 │ │51 │50 │49 │48 │47 │46 │
├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
│23 │22 │21 │20 │19 │18 │27 │ │61 │52 │53 │54 │55 │56 │57 │
└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
│24 │25 │26 │ │60 │59 │58 │
└────────┴────────┴────────┘ └────────┴────────┴────────┘
(30) (29) (28) (62) (63) (64)
*/
const rgblight_segment_t PROGMEM COLEMAK_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
// left side
{0, 6, HSV_BLUE},
{6, 5, HSV_AZURE},
{11, 2, HSV_BLUE},
{13, 10, HSV_AZURE},
{23, 2, HSV_BLUE},
{25, 1, HSV_RED},
{26, 2, HSV_BLUE},
{28, 3, HSV_BLUE}, // underglow
{31, 3, HSV_BLUE}, // underglow
// right side
{34, 6, HSV_BLUE},
{40, 4, HSV_AZURE},
{44, 3, HSV_BLUE},
{47, 7, HSV_AZURE},
{54, 5, HSV_BLUE},
{59, 1, HSV_RED},
{60, 2, HSV_BLUE},
{62, 3, HSV_BLUE}, // underglow
{65, 3, HSV_BLUE} // underglow
);
const rgblight_segment_t PROGMEM NAVNUM_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 14, HSV_BLACK},
{14, 3, HSV_GREEN},
{17, 2, HSV_BLACK},
{19, 1, HSV_GREEN},
{20, 21, RGB_OFF},
{41, 3, HSV_GREEN},
{44, 4, HSV_BLACK},
{48, 3, HSV_GREEN},
{51, 2, HSV_BLACK},
{53, 3, HSV_GREEN},
{56, 2, HSV_BLACK},
{58, 1, HSV_GREEN},
{59, 9, HSV_BLACK}
);
const rgblight_segment_t* const PROGMEM MY_LIGHT_LAYERS[] = RGBLIGHT_LAYERS_LIST(
COLEMAK_LIGHT_LAYER,
NAVNUM_LIGHT_LAYER
);

View File

@@ -0,0 +1 @@
# Keebio Iris Colemak layout

View File

@@ -0,0 +1,24 @@
# Build Options
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = no
COMMAND_ENABLE = no
NKRO_ENABLE = no
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no
ENCODER_ENABLE = no
SPACE_CADET_ENABLE = no
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
TAP_DANCE_ENABLE = no
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
RGBLIGHT_ENABLE = yes
RGB_MATRIX_ENABLE = no
#RGB_MATRIX_ENABLE = yes
#RGB_MATRIX_DRIVER = WS2812
LTO_ENABLE = yes
VIA_ENABLE = yes
KEY_OVERRIDE_ENABLE = yes

View File

@@ -31,8 +31,8 @@
{"matrix":[0,11], "x":10.75, "y":0},
{"matrix":[0,12], "x":11.75, "y":0},
{"matrix":[0,13], "x":12.75, "y":0},
{"matrix":[0,14], "x":14, "y":0},
{"matrix":[4,14], "x":15.25, "y":0},
{"matrix":[4,14], "x":14, "y":0},
{"matrix":[0,14], "x":15.25, "y":0},
{"matrix":[1, 0], "x":0, "y":1},
{"matrix":[1, 1], "x":1, "y":1},

View File

@@ -85,7 +85,7 @@
{"matrix":[3,12], "x":14.75, "y":3.25},
{"matrix":[3,13], "x":15.75, "y":3.25},
{"matrix":[3,14], "x":16.75, "y":3.25},
{"matrix":[2,14], "x":17.75, "y":3.25, "w":1.25, "h":2},
{"matrix":[2,14], "x":17.75, "y":2.25, "w":1.25, "h":2},
{"matrix":[3,15], "x":19.5, "y":3.25},
{"matrix":[4, 0], "x":0, "y":4.25},

View File

@@ -102,7 +102,7 @@
{"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
{"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
{"matrix":[4, 1], "x":2.25, "y":4.25},
{"matrix":[4, 1], "x":1.25, "y":4.25},
{"matrix":[4, 2], "x":2.25, "y":4.25},
{"matrix":[4, 3], "x":3.25, "y":4.25},
{"matrix":[4, 4], "x":4.25, "y":4.25},

View File

@@ -85,7 +85,7 @@
{"matrix":[3,12], "x":14.75, "y":3.25},
{"matrix":[3,13], "x":15.75, "y":3.25},
{"matrix":[3,14], "x":16.75, "y":3.25},
{"matrix":[2,14], "x":17.75, "y":3.25, "w":1.25, "h":2},
{"matrix":[2,14], "x":17.75, "y":2.25, "w":1.25, "h":2},
{"matrix":[3,15], "x":19.5, "y":3.25},
{"matrix":[4, 0], "x":0, "y":4.25},

View File

@@ -102,7 +102,7 @@
{"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
{"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
{"matrix":[4, 1], "x":2.25, "y":4.25},
{"matrix":[4, 1], "x":1.25, "y":4.25},
{"matrix":[4, 2], "x":2.25, "y":4.25},
{"matrix":[4, 3], "x":3.25, "y":4.25},
{"matrix":[4, 4], "x":4.25, "y":4.25},

View File

@@ -1,5 +1,7 @@
/*
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This is the c configuration file for the keymap
Copyright 2022 Tommy Oldfield <@oldfieldtc>
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
@@ -14,6 +16,8 @@ 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 "rev_b.h"
#pragma once
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

View File

@@ -0,0 +1,191 @@
// Copyright 2022 Tommy Oldfield (@oldfieldtc)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layer_number {
_QWERTY = 0,
_LOWER,
_RAISE,
_ADJUST,
};
void render_logo(void);
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
* ,-----------------------------------------. ,-----------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |BackSP|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* |LAlt/⌥|LGUI/⌘|LOWER| /Space / \Enter \ |RAISE | Play |RGUI/⌘ |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_QWERTY] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_MPLY, KC_RGUI
),
/* LOWER
* ,-----------------------------------------. ,-----------------------------------------.
* | Mute |Vol - |Vol + | Play | Rwd | Fwd | | | | | | | DEL |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | ~ |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | Caps | | | | | |-------| |-------| | _ | + | { | } | |\ |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | |LOWER | / / \ \ |RAISE | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_LOWER] = LAYOUT(
KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MRWD, KC_MFFD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NONUS_HASH,
KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_NONUS_BACKSLASH,
KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
),
/* RAISE
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | # |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | |LOWER | / / \ \ |RAISE | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_RAISE] = LAYOUT(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
),
/* ADJUST
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | |LOWER | / / \ \ |RAISE | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_ADJUST] = LAYOUT(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO)
};
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master())
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
return rotation;
}
// When you add source files to SRC in rules.mk, you can use functions.
const char *read_layer_state(void);
const char *read_logo(void);
void set_keylog(uint16_t keycode, keyrecord_t *record);
const char *read_keylog(void);
const char *read_keylogs(void);
bool oled_task_user(void) {
if (is_keyboard_master()) {
// If you want to change the display of OLED, you need to change here
oled_write_ln(read_layer_state(), false);
oled_write_ln(read_keylog(), false);
oled_write_ln(read_keylogs(), false);
oled_write_P(PSTR("WPM: "), false);
oled_write_ln(get_u8_str(get_current_wpm(), '0'), false);
} else {
render_logo();
}
return false;
}
#endif // OLED_ENABLE
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
#ifdef OLED_ENABLE
set_keylog(keycode, record);
#endif
}
return true;
}
void render_logo(void) {
static const char PROGMEM my_logo[] = {
// 'punpun 2', 128x32px
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xe0, 0x70, 0x38, 0x1c, 0x0c, 0x06, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x06, 0x06, 0x06, 0x04, 0x04, 0x0c, 0x0c, 0x08, 0x08, 0x18, 0x18, 0x18, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x07, 0x0c, 0x18, 0x10, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x80, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 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, 0x70, 0x38, 0x1c, 0x06, 0x03,
0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x04, 0x04, 0x0c, 0x08, 0x18, 0x18
};
oled_write_raw_P(my_logo, sizeof(my_logo));
}

View File

@@ -0,0 +1,22 @@
# Lily58 keyboard keymap
## Default layer
![Default keymap layer](https://i.imgur.com/c5kbMww.jpg)
[Default layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/8ff6160c16e9b9ee7e104538bfad4a59)
## Lower layer
![Lower keymap layer](https://i.imgur.com/GcLR3Uw.jpg)
[Lower layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/7d77cd87c53d5eded50530242b852c20)
## Raise layer
![Raise keymap layer](https://i.imgur.com/aNVwlKJ.jpg)
[Raise layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/c7a63881a13e339f1b5b847637677e5f)
## Adjust layer
![Adjust keymap layer](https://i.imgur.com/0l4c1Df.jpg)
[Adjust layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/15a25bc84fa69a1b9f228574674728d3)

View File

@@ -0,0 +1,11 @@
EXTRAKEY_ENABLE = yes
WPM_ENABLE = yes
# If you want to change the display of OLED, you need to change here
SRC += ./lib/rgb_state_reader.c \
./lib/layer_state_reader.c \
./lib/logo_reader.c \
./lib/keylogger.c \
./lib/timelogger.c \
# ./lib/mode_icon_reader.c \
# ./lib/host_led_state_reader.c \

View File

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

View File

@@ -0,0 +1,67 @@
/* Copyright 2023 Paulo Pereira
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "custom_shift_keys.h"
bool process_custom_shift_keys(uint16_t keycode, keyrecord_t *record) {
static uint16_t registered_keycode = KC_NO;
// If a custom shift key is registered, then this event is either
// releasing it or manipulating another key at the same time. Either way,
// we release the currently registered key.
if (registered_keycode != KC_NO) {
unregister_code16(registered_keycode);
registered_keycode = KC_NO;
}
if (record->event.pressed) { // Press event.
const uint8_t mods = get_mods();
#ifndef NO_ACTION_ONESHOT
if ((mods | get_weak_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) {
#else
if ((mods | get_weak_mods()) & MOD_MASK_SHIFT) { // Shift is held.
#endif // NO_ACTION_ONESHOT
// Continue default handling if this is a tap-hold key being held.
if ((IS_QK_MOD_TAP(keycode) || IS_QK_LAYER_TAP(keycode)) &&
record->tap.count == 0) {
return true;
}
// Search for a custom shift key whose keycode is `keycode`.
for (int i = 0; i < NUM_CUSTOM_SHIFT_KEYS; ++i) {
if (keycode == custom_shift_keys[i].keycode) {
registered_keycode = custom_shift_keys[i].shifted_keycode;
if (IS_QK_MODS(registered_keycode) && // Should key be shifted?
(QK_MODS_GET_MODS(registered_keycode) & MOD_LSFT) != 0) {
register_code16(registered_keycode); // If so, press directly.
} else {
// If not, cancel shift mods, press the key, and restore mods.
del_weak_mods(MOD_MASK_SHIFT);
#ifndef NO_ACTION_ONESHOT
del_oneshot_mods(MOD_MASK_SHIFT);
#endif // NO_ACTION_ONESHOT
unregister_mods(MOD_MASK_SHIFT);
register_code16(registered_keycode);
set_mods(mods);
}
return false;
}
}
}
}
return true; // Continue with default handling.
}

View File

@@ -0,0 +1,29 @@
/* Copyright 2023 Paulo Pereira
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include QMK_KEYBOARD_H
typedef struct {
uint16_t keycode;
uint16_t shifted_keycode;
} custom_shift_key_t;
extern const custom_shift_key_t custom_shift_keys[];
extern uint8_t NUM_CUSTOM_SHIFT_KEYS;
bool process_custom_shift_keys(uint16_t keycode, keyrecord_t *record);

View File

@@ -0,0 +1,264 @@
/* Copyright 2023 Paulo Pereira
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "keymap_portuguese.h"
#include "features/custom_shift_keys.h"
enum layer_number {
_QWERTY = 0,
_LOWER,
_RAISE,
_ADJUST,
};
/* tap dance shifts */
typedef struct {
bool is_press_action;
int state;
} tap;
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_TAP
} td_state_t;
enum { LEFT_SHIFT = 0, RIGHT_SHIFT = 1 };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
* ,-----------------------------------------. ,-----------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | '? |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | +* |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | Ç | BACK |
* |------+------+------+------+------+------| <> | | ´` |------+------+------+------+------+------|
* |LCTRL | Z | X | C | V | B |-------| |-------| N | M | ,; | .: | _- |Shift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt |
* | | | |/ / \ \ | | | |
* `-------------------''-------' '------''--------------------'
*/
[_QWERTY] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
TD(LEFT_SHIFT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC,
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(RIGHT_SHIFT),
KC_LALT, KC_LGUI, TL_LOWR, KC_SPC, KC_ENT, TL_UPPR, KC_RGUI, KC_RALT
),
/* LOWER
* ,-----------------------------------------. ,-----------------------------------------.
* | | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | F1 | | | | | | | PgUp | HOME | Up | END | ºª | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | |-------. ,-------| PgDn | Left | Down |Right | ~^ | DEL |
* |------+------+------+------+------+------| <> | | ´` |------+------+------+------+------+------|
* | | | | << | >|| | >> |-------| |-------| | Vol+ | Vol- | Mute | \| | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt |
* | | | |/ / \ \ | | | |
* `-------------------''-------' '------''--------------------'
*/
[_LOWER] = LAYOUT(
_______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
KC_F1, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_LBRC, KC_F12,
_______, _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT, KC_DEL,
_______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, KC_BSLS, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
/* RAISE
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | 1 | 2 | 3 | 4 | 5 | | PgUp | HOME | Up | END | ºª | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | 6 | 7 | 8 | 9 | 0 |-------. ,-------| PgDn | Left | Down |Right | ~^ | |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | | | << | >|| | >> |-------| |-------| | Vol+ | Vol- | Mute | \| | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt |
* | | | |/ / \ \ | | | |
* `-------------------''-------' '------''--------------------'
*/
[_RAISE] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_LBRC, _______,
_______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT, _______,
_______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, KC_BSLS, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
/* ADJUST
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |RGB ON| HUE+ | SAT+ | VAL+ | | BRG+ |-------. ,-------| | | | | | |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | MODE | HUE- | SAT- | VAL- | | BRG- |-------| |-------| | | | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_ADJUST] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BRID, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______
)
};
// SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master()) return OLED_ROTATION_180; // flips the display 180 degrees if offhand
return rotation;
}
// When you add source files to SRC in rules.mk, you can use functions.
const char *read_layer_state(void);
const char *read_logo(void);
void set_keylog(uint16_t keycode, keyrecord_t *record);
const char *read_keylog(void);
const char *read_keylogs(void);
bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_write_ln(read_layer_state(), false);
oled_write_ln(read_keylog(), false);
oled_write_ln(read_keylogs(), false);
} else {
oled_write(read_logo(), false);
}
return false;
}
#endif // OLED_ENABLE
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
#ifdef OLED_ENABLE
set_keylog(keycode, record);
#endif
}
return true;
}
/* Tap dance shifts */
td_state_t cur_dance(tap_dance_state_t *state) {
if (state->count == 1) {
if (state->interrupted || !state->pressed) {
return TD_SINGLE_TAP;
} else {
return TD_SINGLE_HOLD;
}
} else if (state->count == 2) {
return TD_DOUBLE_TAP;
}
return TD_UNKNOWN;
}
static tap lshifttap_state = {.is_press_action = true, .state = TD_NONE};
static tap rshifttap_state = {.is_press_action = true, .state = TD_NONE};
void lshift_finished(tap_dance_state_t *state, void *user_data) {
lshifttap_state.state = cur_dance(state);
switch (lshifttap_state.state) {
case TD_SINGLE_TAP:
register_code16(LALT(KC_LEFT));
break;
case TD_SINGLE_HOLD:
register_code(KC_LSFT);
break;
case TD_DOUBLE_TAP:
tap_code16(LALT(KC_LEFT));
register_code16(LALT(KC_LEFT));
break;
default:
break;
}
}
void lshift_reset(tap_dance_state_t *state, void *user_data) {
switch (lshifttap_state.state) {
case TD_SINGLE_TAP:
unregister_code16(LALT(KC_LEFT));
break;
case TD_SINGLE_HOLD:
unregister_code(KC_LSFT);
break;
case TD_DOUBLE_TAP:
unregister_code16(LALT(KC_LEFT));
break;
}
lshifttap_state.state = TD_NONE;
}
void rshift_finished(tap_dance_state_t *state, void *user_data) {
rshifttap_state.state = cur_dance(state);
switch (rshifttap_state.state) {
case TD_SINGLE_TAP:
register_code16(LALT(KC_RGHT));
break;
case TD_SINGLE_HOLD:
register_code(KC_RSFT);
break;
case TD_DOUBLE_TAP:
tap_code16(LALT(KC_RGHT));
register_code16(LALT(KC_RGHT));
break;
default:
break;
}
}
void rshift_reset(tap_dance_state_t *state, void *user_data) {
switch (rshifttap_state.state) {
case TD_SINGLE_TAP:
unregister_code16(LALT(KC_RGHT));
break;
case TD_SINGLE_HOLD:
unregister_code(KC_RSFT);
break;
case TD_DOUBLE_TAP:
unregister_code16(LALT(KC_RGHT));
break;
}
rshifttap_state.state = TD_NONE;
}
tap_dance_action_t tap_dance_actions[] = {
[LEFT_SHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lshift_finished, lshift_reset),
[RIGHT_SHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rshift_finished, rshift_reset),
};

View File

@@ -0,0 +1,10 @@
# Paulo Lily58
Lily58 is 6×4 column-staggered split keyboard.
![Keymap first layer](https://i.postimg.cc/HWcgcxb8/lily58.png "Keymap first layer")
- Add portuguese include
- Add custom shift behaviour, when tap move by 1 word left <> right, when held act as shift.
idea taken from [here](https://getreuer.info/posts/keyboards/custom-shift-keys/index.html).

View File

@@ -0,0 +1,14 @@
EXTRAKEY_ENABLE = yes # Audio control and System control
OLED_ENABLE= yes # OLED display
TAP_DANCE_ENABLE = yes
TRI_LAYER_ENABLE = yes
# If you want to change the display of OLED, you need to change here
SRC += ./lib/rgb_state_reader.c \
./lib/layer_state_reader.c \
./lib/logo_reader.c \
./lib/keylogger.c \
features/custom_shift_keys.c \
# ./lib/mode_icon_reader.c \
# ./lib/host_led_state_reader.c \
# ./lib/timelogger.c \

View File

@@ -0,0 +1,148 @@
{
"keyboard_name": "zoom75",
"manufacturer": "meletrix",
"url": "https://meletrix.com/products/zoom75-essential-edition-black-wired",
"maintainer": "spbgzh",
"usb": {
"vid": "0x806D",
"pid": "0x0006",
"device_version": "0.0.1"
},
"encoder": {
"rotary": [
{"pin_a": "B0", "pin_b": "B1", "resolution": 2}
]
},
"indicators": {
"caps_lock": "F6",
"on_state": 0
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"encoder": true
},
"matrix_pins": {
"rows": ["F4", "F1", "F0", "C6", "B6", "F5"],
"cols": [
"C7",
"D5",
"B5",
"B4",
"D7",
"D6",
"D4",
"D3",
"D2",
"D1",
"D0",
"B7",
"B2",
"B3",
"F7"
]
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 },
{ "matrix": [0, 1], "label": "F1", "x": 1.25, "y": 0 },
{ "matrix": [0, 2], "label": "F2", "x": 2.25, "y": 0 },
{ "matrix": [0, 3], "label": "F3", "x": 3.25, "y": 0 },
{ "matrix": [0, 4], "label": "F4", "x": 4.25, "y": 0 },
{ "matrix": [0, 5], "label": "F5", "x": 5.5, "y": 0 },
{ "matrix": [0, 6], "label": "F6", "x": 6.5, "y": 0 },
{ "matrix": [0, 7], "label": "F7", "x": 7.5, "y": 0 },
{ "matrix": [0, 8], "label": "F8", "x": 8.5, "y": 0 },
{ "matrix": [0, 9], "label": "F9", "x": 9.75, "y": 0 },
{ "matrix": [0, 10], "label": "F10", "x": 10.75, "y": 0 },
{ "matrix": [0, 11], "label": "F11", "x": 11.75, "y": 0 },
{ "matrix": [0, 12], "label": "F12", "x": 12.75, "y": 0 },
{ "matrix": [0, 13], "label": "F13", "x": 14, "y": 0 },
{ "matrix": [0, 14], "label": "Encoder", "x": 15, "y": 0 },
{ "matrix": [1, 0], "label": "~", "x": 0, "y": 1.25 },
{ "matrix": [1, 1], "label": "1", "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "label": "2", "x": 2, "y": 1.25 },
{ "matrix": [1, 3], "label": "3", "x": 3, "y": 1.25 },
{ "matrix": [1, 4], "label": "4", "x": 4, "y": 1.25 },
{ "matrix": [1, 5], "label": "5", "x": 5, "y": 1.25 },
{ "matrix": [1, 6], "label": "6", "x": 6, "y": 1.25 },
{ "matrix": [1, 7], "label": "7", "x": 7, "y": 1.25 },
{ "matrix": [1, 8], "label": "8", "x": 8, "y": 1.25 },
{ "matrix": [1, 9], "label": "9", "x": 9, "y": 1.25 },
{ "matrix": [1, 10], "label": "0", "x": 10, "y": 1.25 },
{ "matrix": [1, 11], "label": "-", "x": 11, "y": 1.25 },
{ "matrix": [1, 12], "label": "=", "x": 12, "y": 1.25 },
{ "matrix": [1, 13], "label": "Backspace", "x": 13, "y": 1.25 },
{ "matrix": [3, 13], "label": "Backspace1", "x": 14, "y": 1.25 },
{ "matrix": [1, 14], "label": "Delect", "x": 15, "y": 1.25 },
{ "matrix": [2, 0], "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
{ "matrix": [2, 1], "label": "Q", "x": 1.5, "y": 2.25 },
{ "matrix": [2, 2], "label": "W", "x": 2.5, "y": 2.25 },
{ "matrix": [2, 3], "label": "E", "x": 3.5, "y": 2.25 },
{ "matrix": [2, 4], "label": "R", "x": 4.5, "y": 2.25 },
{ "matrix": [2, 5], "label": "T", "x": 5.5, "y": 2.25 },
{ "matrix": [2, 6], "label": "Y", "x": 6.5, "y": 2.25 },
{ "matrix": [2, 7], "label": "U", "x": 7.5, "y": 2.25 },
{ "matrix": [2, 8], "label": "I", "x": 8.5, "y": 2.25 },
{ "matrix": [2, 9], "label": "O", "x": 9.5, "y": 2.25 },
{ "matrix": [2, 10], "label": "P", "x": 10.5, "y": 2.25 },
{ "matrix": [2, 11], "label": "[", "x": 11.5, "y": 2.25 },
{ "matrix": [2, 12], "label": "]", "x": 12.5, "y": 2.25 },
{ "matrix": [2, 13], "label": "\\", "x": 13.5, "y": 2.25, "w": 1.5 },
{ "matrix": [2, 14], "label": "PageUp", "x": 15, "y": 2.25 },
{ "matrix": [3, 0], "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
{ "matrix": [3, 1], "label": "A", "x": 1.75, "y": 3.25 },
{ "matrix": [3, 2], "label": "S", "x": 2.75, "y": 3.25 },
{ "matrix": [3, 3], "label": "D", "x": 3.75, "y": 3.25 },
{ "matrix": [3, 4], "label": "F", "x": 4.75, "y": 3.25 },
{ "matrix": [3, 5], "label": "G", "x": 5.75, "y": 3.25 },
{ "matrix": [3, 6], "label": "H", "x": 6.75, "y": 3.25 },
{ "matrix": [3, 7], "label": "J", "x": 7.75, "y": 3.25 },
{ "matrix": [3, 8], "label": "K", "x": 8.75, "y": 3.25 },
{ "matrix": [3, 9], "label": "L", "x": 9.75, "y": 3.25 },
{ "matrix": [3, 10], "label": ";", "x": 10.75, "y": 3.25 },
{ "matrix": [3, 11], "label": "'", "x": 11.75, "y": 3.25 },
{ "matrix": [3, 12], "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
{ "matrix": [3, 14], "label": "PageDown", "x": 15, "y": 3.25 },
{ "matrix": [4, 0], "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 },
{ "matrix": [4, 1], "label": "Shift2", "x": 1.25, "y": 4.25 },
{ "matrix": [4, 2], "label": "Z", "x": 2.25, "y": 4.25 },
{ "matrix": [4, 3], "label": "X", "x": 3.25, "y": 4.25 },
{ "matrix": [4, 4], "label": "C", "x": 4.25, "y": 4.25 },
{ "matrix": [4, 5], "label": "V", "x": 5.25, "y": 4.25 },
{ "matrix": [4, 6], "label": "B", "x": 6.25, "y": 4.25 },
{ "matrix": [4, 7], "label": "N", "x": 7.25, "y": 4.25 },
{ "matrix": [4, 8], "label": "M", "x": 8.25, "y": 4.25 },
{ "matrix": [4, 9], "label": ",", "x": 9.25, "y": 4.25 },
{ "matrix": [4, 10], "label": ".", "x": 10.25, "y": 4.25 },
{ "matrix": [4, 11], "label": "/", "x": 11.25, "y": 4.25 },
{ "matrix": [4, 12], "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
{ "matrix": [4, 13], "label": "\u2191", "x": 14, "y": 4.25 },
{ "matrix": [5, 0], "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 1], "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 2], "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 5], "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 },
{ "matrix": [5, 6], "label": "Space","x": 6, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 7], "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 },
{ "matrix": [5, 9], "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 10], "label": "Fn", "x": 11.25, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 12], "label": "\u2190", "x": 13, "y": 5.25 },
{ "matrix": [5, 13], "label": "\u2193", "x": 14, "y": 5.25 },
{ "matrix": [5, 14], "label": "\u2192", "x": 15, "y": 5.25 }
]
}
}
}

View File

@@ -0,0 +1,43 @@
/* Copyright 2023 meletrix
*
* 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
#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_MPRV, KC_MNXT), },
};
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] ={
[0] = LAYOUT(
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_F13, 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_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View File

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

View File

@@ -0,0 +1,44 @@
/* Copyright 2023 meletrix
*
* 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
#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_MNXT, KC_MPRV) },
};
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] ={
[0] = LAYOUT(
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_F13, 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_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

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