Browse Source

Merge branch 'qmk:master' into master

pull/17502/head
emdashii 1 year ago
committed by GitHub
parent
commit
c1643104dd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
421 changed files with 16239 additions and 1448 deletions
  1. +6
    -0
      .github/dependabot.yml
  2. +0
    -58
      .github/stale.yml
  3. +1
    -1
      .github/workflows/api.yml
  4. +2
    -2
      .github/workflows/auto_tag.yml
  5. +1
    -1
      .github/workflows/cli.yml
  6. +1
    -1
      .github/workflows/develop_api.yml
  7. +1
    -1
      .github/workflows/develop_update.yml
  8. +2
    -2
      .github/workflows/docs.yml
  9. +1
    -1
      .github/workflows/feature_branch_update.yml
  10. +1
    -1
      .github/workflows/format.yml
  11. +2
    -2
      .github/workflows/format_push.yml
  12. +4
    -1
      .github/workflows/lint.yml
  13. +64
    -0
      .github/workflows/stale.yml
  14. +1
    -1
      .github/workflows/unit_test.yml
  15. +3
    -1
      .gitignore
  16. +9
    -1
      data/mappings/info_config.json
  17. +8
    -1
      data/mappings/info_rules.json
  18. +4
    -1
      data/schemas/keyboard.jsonschema
  19. +2
    -0
      docs/compatible_microcontrollers.md
  20. +4
    -0
      docs/feature_midi.md
  21. +2
    -0
      docs/feature_split_keyboard.md
  22. +6
    -2
      docs/ref_functions.md
  23. +1
    -1
      docs/reference_info_json.md
  24. +137
    -0
      keyboards/abatskeyboardclub/nayeon/config.h
  25. +299
    -0
      keyboards/abatskeyboardclub/nayeon/info.json
  26. +20
    -0
      keyboards/abatskeyboardclub/nayeon/keymaps/default/config.h
  27. +61
    -0
      keyboards/abatskeyboardclub/nayeon/keymaps/default/keymap.c
  28. +19
    -0
      keyboards/abatskeyboardclub/nayeon/keymaps/iso/config.h
  29. +61
    -0
      keyboards/abatskeyboardclub/nayeon/keymaps/iso/keymap.c
  30. +19
    -0
      keyboards/abatskeyboardclub/nayeon/keymaps/via/config.h
  31. +85
    -0
      keyboards/abatskeyboardclub/nayeon/keymaps/via/keymap.c
  32. +1
    -0
      keyboards/abatskeyboardclub/nayeon/keymaps/via/rules.mk
  33. +2
    -4
      keyboards/abatskeyboardclub/nayeon/nayeon.c
  34. +81
    -0
      keyboards/abatskeyboardclub/nayeon/nayeon.h
  35. +20
    -0
      keyboards/abatskeyboardclub/nayeon/readme.md
  36. +18
    -0
      keyboards/abatskeyboardclub/nayeon/rules.mk
  37. +17
    -0
      keyboards/adm42/adm42.c
  38. +31
    -0
      keyboards/adm42/adm42.h
  39. +39
    -0
      keyboards/adm42/config.h
  40. +27
    -0
      keyboards/adm42/readme.md
  41. +52
    -0
      keyboards/adm42/rev4/config.h
  42. +3
    -0
      keyboards/adm42/rev4/keymaps/default/config.h
  43. +210
    -0
      keyboards/adm42/rev4/keymaps/default/keymap.c
  44. +39
    -0
      keyboards/adm42/rev4/rev4.c
  45. +2
    -0
      keyboards/adm42/rev4/rules.mk
  46. +22
    -0
      keyboards/adm42/rules.mk
  47. +1
    -1
      keyboards/adpenrose/kintsugi/keymaps/default/keymap.c
  48. +0
    -164
      keyboards/adpenrose/kintsugi/keymaps/franky/keymap.c
  49. +0
    -1
      keyboards/adpenrose/kintsugi/keymaps/franky/readme.md
  50. +454
    -0
      keyboards/adpenrose/kintsugi/keymaps/snailmap_port/keymap.c
  51. +30
    -0
      keyboards/adpenrose/kintsugi/keymaps/snailmap_port/readme.md
  52. +5
    -0
      keyboards/adpenrose/kintsugi/keymaps/snailmap_port/rules.mk
  53. +1
    -1
      keyboards/adpenrose/kintsugi/keymaps/via/keymap.c
  54. +33
    -26
      keyboards/adpenrose/kintsugi/kintsugi.c
  55. +42
    -42
      keyboards/adpenrose/kintsugi/lib/kintsugifont.c
  56. +9
    -0
      keyboards/alt34/rev1/config.h
  57. +0
    -1
      keyboards/alt34/rev1/rules.mk
  58. +2
    -1
      keyboards/annepro2/annepro2.c
  59. +27
    -0
      keyboards/annepro2/ap2_led.c
  60. +13
    -0
      keyboards/annepro2/ap2_led.h
  61. +6
    -0
      keyboards/annepro2/protocol.h
  62. +4
    -4
      keyboards/annepro2/rgb_driver.c
  63. +2
    -0
      keyboards/atreus/atreus.h
  64. +28
    -0
      keyboards/atreus/f103/chconf.h
  65. +38
    -0
      keyboards/atreus/f103/config.h
  66. +2
    -4
      keyboards/atreus/f103/f103.c
  67. +1
    -3
      keyboards/atreus/f103/f103.h
  68. +26
    -0
      keyboards/atreus/f103/halconf.h
  69. +30
    -0
      keyboards/atreus/f103/mcuconf.h
  70. +10
    -0
      keyboards/atreus/f103/rules.mk
  71. +137
    -0
      keyboards/atreus/keymaps/quartz64/keymap.c
  72. +2
    -1
      keyboards/atreus/readme.md
  73. +15
    -0
      keyboards/atset/at6/at6.c
  74. +24
    -0
      keyboards/atset/at6/at6.h
  75. +76
    -0
      keyboards/atset/at6/config.h
  76. +9
    -0
      keyboards/atset/at6/info.json
  77. +39
    -0
      keyboards/atset/at6/keymaps/default/keymap.c
  78. +39
    -0
      keyboards/atset/at6/keymaps/via/keymap.c
  79. +25
    -0
      keyboards/atset/at6/readme.md
  80. +18
    -0
      keyboards/atset/at6/rules.mk
  81. +2
    -2
      keyboards/basketweave/config.h
  82. +56
    -0
      keyboards/bbrfkr/dynamis/config.h
  83. +33
    -0
      keyboards/bbrfkr/dynamis/dynamis.c
  84. +59
    -0
      keyboards/bbrfkr/dynamis/dynamis.h
  85. +733
    -0
      keyboards/bbrfkr/dynamis/info.json
  86. +59
    -0
      keyboards/bbrfkr/dynamis/keymaps/default/keymap.c
  87. +59
    -0
      keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c
  88. +59
    -0
      keyboards/bbrfkr/dynamis/keymaps/via/keymap.c
  89. +1
    -0
      keyboards/bbrfkr/dynamis/keymaps/via/rules.mk
  90. +29
    -0
      keyboards/bbrfkr/dynamis/readme.md
  91. +23
    -0
      keyboards/bbrfkr/dynamis/rules.mk
  92. +17
    -0
      keyboards/blaster75/blaster75.c
  93. +97
    -0
      keyboards/blaster75/blaster75.h
  94. +44
    -0
      keyboards/blaster75/config.h
  95. +186
    -0
      keyboards/blaster75/info.json
  96. +37
    -0
      keyboards/blaster75/keymaps/default/keymap.c
  97. +7
    -0
      keyboards/blaster75/keymaps/default/readme.md
  98. +51
    -0
      keyboards/blaster75/keymaps/via/keymap.c
  99. +1
    -0
      keyboards/blaster75/keymaps/via/rules.mk
  100. +31
    -0
      keyboards/blaster75/readme.md

+ 6
- 0
.github/dependabot.yml View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

+ 0
- 58
.github/stale.yml View File

@ -1,58 +0,0 @@
# Configuration for probot-stale - https://github.com/probot/stale
# General configuration
# Pull request specific configuration
pulls:
staleLabel: awaiting changes
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 45
# Number of days of inactivity before a stale Issue or Pull Request is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 30
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had
activity in the last 45 days. It will be closed in 30 days if no further activity occurs.
Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with `awaiting review`, `breaking_change`, `in progress`, or `on hold` to prevent
the issue from being re-flagged.
# Comment to post when closing a stale Issue or Pull Request.
closeComment: >
Thank you for your contribution!
This pull request has been automatically closed because it has not had activity in the last 30 days.
Please feel free to give a status update now, ping for review, or re-open when it's ready.
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
exemptLabels:
- awaiting review
- breaking_change
- in progress
- on hold
# Issue specific configuration
issues:
staleLabel: stale
limitPerRun: 10
daysUntilStale: 90
daysUntilClose: 30
markComment: >
This issue has been automatically marked as stale because it has not had activity in the
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity
occurs.
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent
the issue from being re-flagged.
closeComment: >
This issue has been automatically closed because it has not had activity in the last 30 days.
If this issue is still valid, re-open the issue and let us know.
exemptLabels:
- bug
- in progress
- on hold
- discussion
- to do

+ 1
- 1
.github/workflows/api.yml View File

@ -18,7 +18,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 1
persist-credentials: false


+ 2
- 2
.github/workflows/auto_tag.yml View File

@ -22,12 +22,12 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.26.0
uses: anothrNick/github-tag-action@1.39.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'

+ 1
- 1
.github/workflows/cli.yml View File

@ -18,7 +18,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies


+ 1
- 1
.github/workflows/develop_api.yml View File

@ -18,7 +18,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 1
persist-credentials: false


+ 1
- 1
.github/workflows/develop_update.yml View File

@ -12,7 +12,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0


+ 2
- 2
.github/workflows/docs.yml View File

@ -20,7 +20,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 1
@ -34,7 +34,7 @@ jobs:
qmk --verbose generate-docs
- name: Deploy
uses: JamesIves/github-pages-deploy-action@3.7.1
uses: JamesIves/github-pages-deploy-action@v4.3.4
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BASE_BRANCH: master


+ 1
- 1
.github/workflows/feature_branch_update.yml View File

@ -17,7 +17,7 @@ jobs:
- xap
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0


+ 1
- 1
.github/workflows/format.yml View File

@ -19,7 +19,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0


+ 2
- 2
.github/workflows/format_push.yml View File

@ -13,7 +13,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
@ -37,7 +37,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
uses: peter-evans/create-pull-request@v4
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}


+ 4
- 1
.github/workflows/lint.yml View File

@ -12,10 +12,13 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- uses: trilom/file-changes-action@v1.2.4
id: file_changes
with:


+ 64
- 0
.github/workflows/stale.yml View File

@ -0,0 +1,64 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
permissions:
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
remove-stale-when-updated: true
exempt-draft-pr: true
ascending: true
operations-per-run: 150
stale-issue-label: stale
days-before-issue-stale: 90
days-before-issue-close: 30
exempt-issue-labels: bug,in progress,on hold,discussion,to do
stale-issue-message: >
This issue has been automatically marked as stale because it has not had activity in the
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity
occurs.
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent
the issue from being re-flagged.
close-issue-message: >
This issue has been automatically closed because it has not had activity in the last 30 days.
If this issue is still valid, re-open the issue and let us know.
// [stale-action-closed]
stale-pr-label: stale
days-before-pr-stale: 45
days-before-pr-close: 30
exempt-pr-labels: bug,awaiting review,breaking_change,in progress,on hold
stale-pr-message: >
Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had
activity in the last 45 days. It will be closed in 30 days if no further activity occurs.
Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with `bug`, `awaiting review`, `breaking_change`, `in progress`, or `on hold`
to prevent the issue from being re-flagged.
close-pr-message: >
Thank you for your contribution!
This pull request has been automatically closed because it has not had activity in the last 30 days.
Please feel free to give a status update now, ping for review, or re-open when it's ready.
// [stale-action-closed]

+ 1
- 1
.github/workflows/unit_test.yml View File

@ -23,7 +23,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies


+ 3
- 1
.gitignore View File

@ -67,10 +67,12 @@ CMakeLists.txt
.vscode/temp.sql
tags
# Ignore image files
# Ignore image/font files
*.gif
*.jpg
*.png
*.ttf
*.otf
# Things Travis sees
/.vs


+ 9
- 1
data/mappings/info_config.json View File

@ -7,6 +7,8 @@
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from config.h
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
"BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
@ -19,7 +21,6 @@
"DEVICE_VER": {"info_key": "usb.device_ver", "value_type": "hex"},
# TODO: Replace ^^^ with vvv
#"DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version"},
"DESCRIPTION": {"info_key": "keyboard_folder", "value_type": "str", "to_json": false},
"DIODE_DIRECTION": {"info_key": "diode_direction"},
"DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.double_tap_shift_turns_on", "value_type": "bool"},
"FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"},
@ -102,4 +103,11 @@
"USB_MAX_POWER_CONSUMPTION": {"info_key": "usb.max_power", "value_type": "int"},
"USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"},
"USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"},
# Items we want flagged in lint
"NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
"NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
"DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
"DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true},
"PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
}

+ 8
- 1
data/mappings/info_rules.json View File

@ -7,6 +7,8 @@
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BLUETOOTH": {"info_key": "bluetooth.driver"},
@ -24,5 +26,10 @@
"SECURE_ENABLE": {"info_key": "secure.enabled", "value_type": "bool"},
"SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"},
"SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "to_c": false},
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"}
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},
# Items we want flagged in lint
"CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true},
"CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true},
"VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true},
}

+ 4
- 1
data/schemas/keyboard.jsonschema View File

@ -145,7 +145,10 @@
"type": "object",
"additionalProperties": false,
"properties": {
"label": {"type": "string"},
"label": {
"type": "string",
"pattern": "^[^\\n]*$"
},
"matrix": {
"type": "array",
"minItems": 2,


+ 2
- 0
docs/compatible_microcontrollers.md View File

@ -2,6 +2,8 @@
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB+ for AVR, and 64kB+ for ARM. With significant disabling of features, QMK may *just* squeeze into 16kB AVR MCUs.
Features within QMK may or may not be compatible with every microcontroller.
## Atmel AVR
The following use [LUFA](https://www.fourwalledcubicle.com/LUFA.php) as the USB stack:


+ 4
- 0
docs/feature_midi.md View File

@ -10,6 +10,10 @@ MIDI_ENABLE = yes
There are two MIDI systems in QMK: basic and advanced. With basic MIDI you will only be able to send Note On and Note Off messages using the note keycodes, meaning that keycodes like `MI_OCTU` and `MI_OCTD` will not work. Advanced MIDI allows you to do things like octave shifts, channel changes, velocity changes, modulation, and more.
### Caveats
MIDI requires 2 USB endpoints and as such may not work on some hardware such as V-USB controllers.
### Basic MIDI
To enable basic MIDI, add the following to your `config.h`:


+ 2
- 0
docs/feature_split_keyboard.md View File

@ -10,6 +10,8 @@ For this, we will mostly be talking about the generic implementation used by the
!> ARM split supports most QMK subsystems when using the 'serial' and 'serial_usart' drivers. I2C slave is currently unsupported.
!> Both sides must use the same MCU family, for eg two Pro Micro-compatible controllers or two Blackpills. Currently, mixing AVR and ARM is not possible as ARM vs AVR uses different method for serial communication, and are not compatible. Moreover Blackpill's uses 3.3v logic, and atmega32u4 uses 5v logic.
## Compatibility Overview
| Transport | AVR | ARM |


+ 6
- 2
docs/ref_functions.md View File

@ -87,9 +87,13 @@ To configure the default layer sounds, you would want to define this in your `co
## Resetting the keyboard
There is the `RESET` quantum keycode that you can use. But if you want to reset the board as part of a macro, rather than hitting a key separately, you can do that.
There is the `QK_REBOOT` or `QK_RBT` quantum keycode that you can use. But if you want to reset the board as part of a macro, rather than hitting a key separately, you can do that.
And to do so, add `reset_keyboard()` to your function or macro, and this will reset to bootloader.
And to do so, add `soft_reset_keyboard()` to your function or macro.
## Reset to bootloader
To reset to the bootloader use `QK_BOOTLOADER` or `QK_BOOT` keycode or `reset_keyboard()` function.
## Wiping the EEPROM (Persistent Storage)


+ 1
- 1
docs/reference_info_json.md View File

@ -89,7 +89,7 @@ Example:
Direct pins are when you connect one side of the switch to GND and the other side to a GPIO pin on your MCU. No diode is required, but there is a 1:1 mapping between switches and pins.
When specifying direct pins you need to arrange them in nested arrays. The outer array consists of rows, while the inner array is a text string corresponding to a pin. You can use `null` to indicate an empty spot in the matrix.
When specifying direct pins you need to arrange them in nested arrays. The outer array consists of rows, while the inner array uses text strings to identify the pins used in each row. You can use `null` to indicate an empty spot in the matrix.
Example:


+ 137
- 0
keyboards/abatskeyboardclub/nayeon/config.h View File

@ -0,0 +1,137 @@
/*
Copyright 2022 Ramon Imbao
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 "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x4B47
#define PRODUCT_ID 0x0001
#define DEVICE_VER 0x0001
#define MANUFACTURER Abats Keyboard Club
#define PRODUCT Nayeon
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { B2, B3, B7, D6, D3, D2 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D5, B0, B1, D1 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
# define RGBLED_NUM 26
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
/*== or choose animations ==*/
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//# define RGBLIGHT_EFFECT_SNAKE
//# define RGBLIGHT_EFFECT_KNIGHT
# define RGBLIGHT_EFFECT_CHRISTMAS
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
# define RGBLIGHT_EFFECT_RGB_TEST
# define RGBLIGHT_EFFECT_ALTERNATING
/*== customize breathing effect ==*/
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
/*==== use exp() and sin() ====*/
//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* 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
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

+ 299
- 0
keyboards/abatskeyboardclub/nayeon/info.json View File

@ -0,0 +1,299 @@
{
"keyboard_name": "Nayeon",
"url": "",
"maintainer": "Ramon Imbao",
"layouts": {
"LAYOUT_ansi": {
"layout": [
{"x":0, "y":0},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.5, "y":0},
{"x":6.5, "y":0},
{"x":7.5, "y":0},
{"x":8.5, "y":0},
{"x":9.75, "y":0},
{"x":10.75, "y":0},
{"x":11.75, "y":0},
{"x":12.75, "y":0},
{"x":14, "y":0},
{"x":15.25, "y":0},
{"x":16.25, "y":0},
{"x":17.25, "y":0},
{"x":0, "y":1.25},
{"x":1, "y":1.25},
{"x":2, "y":1.25},
{"x":3, "y":1.25},
{"x":4, "y":1.25},
{"x":5, "y":1.25},
{"x":6, "y":1.25},
{"x":7, "y":1.25},
{"x":8, "y":1.25},
{"x":9, "y":1.25},
{"x":10, "y":1.25},
{"x":11, "y":1.25},
{"x":12, "y":1.25},
{"x":13, "y":1.25, "w":2},
{"x":15.25, "y":1.25},
{"x":16.25, "y":1.25},
{"x":17.25, "y":1.25},
{"x":0, "y":2.25, "w":1.5},
{"x":1.5, "y":2.25},
{"x":2.5, "y":2.25},
{"x":3.5, "y":2.25},
{"x":4.5, "y":2.25},
{"x":5.5, "y":2.25},
{"x":6.5, "y":2.25},
{"x":7.5, "y":2.25},
{"x":8.5, "y":2.25},
{"x":9.5, "y":2.25},
{"x":10.5, "y":2.25},
{"x":11.5, "y":2.25},
{"x":12.5, "y":2.25},
{"x":13.5, "y":2.25, "w":1.5},
{"x":15.25, "y":2.25},
{"x":16.25, "y":2.25},
{"x":17.25, "y":2.25},
{"x":0, "y":3.25, "w":1.75},
{"x":1.75, "y":3.25},
{"x":2.75, "y":3.25},
{"x":3.75, "y":3.25},
{"x":4.75, "y":3.25},
{"x":5.75, "y":3.25},
{"x":6.75, "y":3.25},
{"x":7.75, "y":3.25},
{"x":8.75, "y":3.25},
{"x":9.75, "y":3.25},
{"x":10.75, "y":3.25},
{"x":11.75, "y":3.25},
{"x":12.75, "y":3.25, "w":2.25},
{"x":0, "y":4.25, "w":2.25},
{"x":2.25, "y":4.25},
{"x":3.25, "y":4.25},
{"x":4.25, "y":4.25},
{"x":5.25, "y":4.25},
{"x":6.25, "y":4.25},
{"x":7.25, "y":4.25},
{"x":8.25, "y":4.25},
{"x":9.25, "y":4.25},
{"x":10.25, "y":4.25},
{"x":11.25, "y":4.25},
{"x":12.25, "y":4.25, "w":2.75},
{"x":16.25, "y":4.25},
{"x":0, "y":5.25, "w":1.5},
{"x":1.5, "y":5.25},
{"x":2.5, "y":5.25, "w":1.5},
{"x":4, "y":5.25, "w":7},
{"x":11, "y":5.25, "w":1.5},
{"x":12.5, "y":5.25},
{"x":13.5, "y":5.25, "w":1.5},
{"x":15.25, "y":5.25},
{"x":16.25, "y":5.25},
{"x":17.25, "y":5.25}
]
},
"LAYOUT_iso": {
"layout": [
{"x":0, "y":0},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.5, "y":0},
{"x":6.5, "y":0},
{"x":7.5, "y":0},
{"x":8.5, "y":0},
{"x":9.75, "y":0},
{"x":10.75, "y":0},
{"x":11.75, "y":0},
{"x":12.75, "y":0},
{"x":14, "y":0},
{"x":15.25, "y":0},
{"x":16.25, "y":0},
{"x":17.25, "y":0},
{"x":0, "y":1.25},
{"x":1, "y":1.25},
{"x":2, "y":1.25},
{"x":3, "y":1.25},
{"x":4, "y":1.25},
{"x":5, "y":1.25},
{"x":6, "y":1.25},
{"x":7, "y":1.25},
{"x":8, "y":1.25},
{"x":9, "y":1.25},
{"x":10, "y":1.25},
{"x":11, "y":1.25},
{"x":12, "y":1.25},
{"x":13, "y":1.25, "w":2},
{"x":15.25, "y":1.25},
{"x":16.25, "y":1.25},
{"x":17.25, "y":1.25},
{"x":0, "y":2.25, "w":1.5},
{"x":1.5, "y":2.25},
{"x":2.5, "y":2.25},
{"x":3.5, "y":2.25},
{"x":4.5, "y":2.25},
{"x":5.5, "y":2.25},
{"x":6.5, "y":2.25},
{"x":7.5, "y":2.25},
{"x":8.5, "y":2.25},
{"x":9.5, "y":2.25},
{"x":10.5, "y":2.25},
{"x":11.5, "y":2.25},
{"x":12.5, "y":2.25},
{"x":15.25, "y":2.25},
{"x":16.25, "y":2.25},
{"x":17.25, "y":2.25},
{"x":0, "y":3.25, "w":1.75},
{"x":1.75, "y":3.25},
{"x":2.75, "y":3.25},
{"x":3.75, "y":3.25},
{"x":4.75, "y":3.25},
{"x":5.75, "y":3.25},
{"x":6.75, "y":3.25},
{"x":7.75, "y":3.25},
{"x":8.75, "y":3.25},
{"x":9.75, "y":3.25},
{"x":10.75, "y":3.25},
{"x":11.75, "y":3.25},
{"x":12.75, "y":3.25},
{"x":13.75, "y":2.25, "w":1.25, "h":2},
{"x":0, "y":4.25, "w":1.25},
{"x":1.25, "y":4.25},
{"x":2.25, "y":4.25},
{"x":3.25, "y":4.25},
{"x":4.25, "y":4.25},
{"x":5.25, "y":4.25},
{"x":6.25, "y":4.25},
{"x":7.25, "y":4.25},
{"x":8.25, "y":4.25},
{"x":9.25, "y":4.25},
{"x":10.25, "y":4.25},
{"x":11.25, "y":4.25},
{"x":12.25, "y":4.25, "w":2.75},
{"x":16.25, "y":4.25},
{"x":0, "y":5.25, "w":1.5},
{"x":1.5, "y":5.25},
{"x":2.5, "y":5.25, "w":1.5},
{"x":4, "y":5.25, "w":7},
{"x":11, "y":5.25, "w":1.5},
{"x":12.5, "y":5.25},
{"x":13.5, "y":5.25, "w":1.5},
{"x":15.25, "y":5.25},
{"x":16.25, "y":5.25},
{"x":17.25, "y":5.25}
]
},
"LAYOUT_all": {
"layout": [
{"x":0, "y":0},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.5, "y":0},
{"x":6.5, "y":0},
{"x":7.5, "y":0},
{"x":8.5, "y":0},
{"x":9.75, "y":0},
{"x":10.75, "y":0},
{"x":11.75, "y":0},
{"x":12.75, "y":0},
{"x":14, "y":0},
{"x":15.25, "y":0},
{"x":16.25, "y":0},
{"x":17.25, "y":0},
{"x":0, "y":1.25},
{"x":1, "y":1.25},
{"x":2, "y":1.25},
{"x":3, "y":1.25},
{"x":4, "y":1.25},
{"x":5, "y":1.25},
{"x":6, "y":1.25},
{"x":7, "y":1.25},
{"x":8, "y":1.25},
{"x":9, "y":1.25},
{"x":10, "y":1.25},
{"x":11, "y":1.25},
{"x":12, "y":1.25},
{"x":13, "y":1.25},
{"x":14, "y":1.25},
{"x":15.25, "y":1.25},
{"x":16.25, "y":1.25},
{"x":17.25, "y":1.25},
{"x":0, "y":2.25, "w":1.5},
{"x":1.5, "y":2.25},
{"x":2.5, "y":2.25},
{"x":3.5, "y":2.25},
{"x":4.5, "y":2.25},
{"x":5.5, "y":2.25},
{"x":6.5, "y":2.25},
{"x":7.5, "y":2.25},
{"x":8.5, "y":2.25},
{"x":9.5, "y":2.25},
{"x":10.5, "y":2.25},
{"x":11.5, "y":2.25},
{"x":12.5, "y":2.25},
{"x":13.5, "y":2.25, "w":1.5},
{"x":15.25, "y":2.25},
{"x":16.25, "y":2.25},
{"x":17.25, "y":2.25},
{"x":0, "y":3.25, "w":1.75},
{"x":1.75, "y":3.25},
{"x":2.75, "y":3.25},
{"x":3.75, "y":3.25},
{"x":4.75, "y":3.25},
{"x":5.75, "y":3.25},
{"x":6.75, "y":3.25},
{"x":7.75, "y":3.25},
{"x":8.75, "y":3.25},
{"x":9.75, "y":3.25},
{"x":10.75, "y":3.25},
{"x":11.75, "y":3.25},
{"x":12.75, "y":3.25, "w":2.25},
{"x":0, "y":4.25, "w":1.25},
{"x":1.25, "y":4.25},
{"x":2.25, "y":4.25},
{"x":3.25, "y":4.25},
{"x":4.25, "y":4.25},
{"x":5.25, "y":4.25},
{"x":6.25, "y":4.25},
{"x":7.25, "y":4.25},
{"x":8.25, "y":4.25},
{"x":9.25, "y":4.25},
{"x":10.25, "y":4.25},
{"x":11.25, "y":4.25},
{"x":12.25, "y":4.25, "w":1.75},
{"x":14, "y":4.25},
{"x":16.25, "y":4.25},
{"x":0, "y":5.25, "w":1.5},
{"x":1.5, "y":5.25},
{"x":2.5, "y":5.25, "w":1.5},
{"x":4, "y":5.25, "w":7},
{"x":11, "y":5.25, "w":1.5},
{"x":12.5, "y":5.25},
{"x":13.5, "y":5.25, "w":1.5},
{"x":15.25, "y":5.25},
{"x":16.25, "y":5.25},
{"x":17.25, "y":5.25}
]
}
}
}

+ 20
- 0
keyboards/abatskeyboardclub/nayeon/keymaps/default/config.h View File

@ -0,0 +1,20 @@
/* Copyright 2022 Ramon Imbao
*
* 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 RGBLIGHT_LAYERS
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF

+ 61
- 0
keyboards/abatskeyboardclub/nayeon/keymaps/default/keymap.c View File

@ -0,0 +1,61 @@
/* Copyright 2022 Ramon Imbao
*
* 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_ansi(
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_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
#ifdef RGBLIGHT_ENABLE
const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF},
{1, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
{1, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF}
);
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
void keyboard_post_init_user(void) {
rgblight_layers = rgb_layers;
}
bool led_update_user(led_t led_state) {
uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
for (uint8_t i=0; i<3; i++) {
rgblight_set_layer_state(i, false);
}
if (lock_bits < 3) {
rgblight_set_layer_state(lock_bits, true);
}
return false;
}
#endif

+ 19
- 0
keyboards/abatskeyboardclub/nayeon/keymaps/iso/config.h View File

@ -0,0 +1,19 @@
/* Copyright 2022 Ramon Imbao
*
* 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 RGBLIGHT_LAYERS
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF

+ 61
- 0
keyboards/abatskeyboardclub/nayeon/keymaps/iso/keymap.c View File

@ -0,0 +1,61 @@
/* Copyright 2022 Ramon Imbao
*
* 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_iso(
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_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_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_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
#ifdef RGBLIGHT_ENABLE
const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF},
{1, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
{1, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF}
);
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
void keyboard_post_init_user(void) {
rgblight_layers = rgb_layers;
}
bool led_update_user(led_t led_state) {
uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
for (uint8_t i=0; i<3; i++) {
rgblight_set_layer_state(i, false);
}
if (lock_bits < 3) {
rgblight_set_layer_state(lock_bits, true);
}
return false;
}
#endif

+ 19
- 0
keyboards/abatskeyboardclub/nayeon/keymaps/via/config.h View File

@ -0,0 +1,19 @@
/* Copyright 2022 Ramon Imbao
*
* 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 RGBLIGHT_LAYERS
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF

+ 85
- 0
keyboards/abatskeyboardclub/nayeon/keymaps/via/keymap.c View File

@ -0,0 +1,85 @@
/* Copyright 2022 Ramon Imbao
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_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_PSCR, KC_SLCK, KC_PAUS,
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_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
#ifdef RGBLIGHT_ENABLE
const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF},
{1, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
{1, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF}
);
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
void keyboard_post_init_user(void) {
rgblight_layers = rgb_layers;
}
bool led_update_user(led_t led_state) {
uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
for (uint8_t i=0; i<3; i++) {
rgblight_set_layer_state(i, false);
}
if (lock_bits < 3) {
rgblight_set_layer_state(lock_bits, true);
}
return false;
}
#endif

+ 1
- 0
keyboards/abatskeyboardclub/nayeon/keymaps/via/rules.mk View File

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

keyboards/checkerboards/quark_lp/keymaps/default/config.h → keyboards/abatskeyboardclub/nayeon/nayeon.c View File

@ -1,4 +1,4 @@
/* Copyright 2021 Nathan Spears
/* Copyright 2022 Ramon Imbao
*
* 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 +14,4 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define TAPPING_TOGGLE 2
#include "nayeon.h"

+ 81
- 0
keyboards/abatskeyboardclub/nayeon/nayeon.h View File

@ -0,0 +1,81 @@
/* Copyright 2022 Ramon Imbao
*
* 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 ___ KC_NO
// ANSI layout
// Full backspace
// Full right shift
// Full left shift
#define LAYOUT_ansi( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4f, \
k50, k51, k52, k57, k5b, k5c, k5d, k5e, k5f, k5g \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___, ___, ___ }, \
{ k40, ___, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \
}
// ISO layout
// Full backspace
// Full right shift
// Split left shift
#define LAYOUT_iso( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k2f, k2g, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k2d, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4f, \
k50, k51, k52, k57, k5b, k5c, k5d, k5e, k5f, k5g \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___, ___, ___ }, \
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \
}
// Layout for VIA
// Split backspace
// Split left shift
// Split right shift
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k3d, k1e, k1f, k1g, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, \
k50, k51, k52, k57, k5b, k5c, k5d, k5e, k5f, k5g \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, ___, ___, ___ }, \
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, k4f, ___ }, \
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g } \
}

+ 20
- 0
keyboards/abatskeyboardclub/nayeon/readme.md View File

@ -0,0 +1,20 @@
# Nayeon
![Nayeon](https://i.imgur.com/OfB5ikbl.jpg)
Nayeon is a screwless TKL keyboard with an extra key, inspired by a K-pop artist named Im-Nayeon.
* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
* Hardware Supported: ATmega32u4
Make example for this keyboard (after setting up your build environment):
make abatskeyboardclub/nayeon:via
To get to the bootloader, simply press the reset button located at the back of the PCB. You can then flash new firmware onto it.
Flashing example for this keyboard:
make abatskeyboardclub/nayeon:via: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).

+ 18
- 0
keyboards/abatskeyboardclub/nayeon/rules.mk View File

@ -0,0 +1,18 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

+ 17
- 0
keyboards/adm42/adm42.c View File

@ -0,0 +1,17 @@
/* Copyright 2020-2022 Lorenzo Leonini
* SPDX-License-Identifier: GPL-2.0-only
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* 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 "adm42.h"

+ 31
- 0
keyboards/adm42/adm42.h View File

@ -0,0 +1,31 @@
/* Copyright 2020-2022 Lorenzo Leonini
* SPDX-License-Identifier: GPL-2.0-only
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* 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_adm42_3x12_6( \
K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
K404, K405, K406, K407, K408, K409 \
) { \
{ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
{ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
{ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
{ KC_NO, KC_NO, KC_NO, K404, K405, K407, K406, K408, K409, KC_NO, KC_NO, KC_NO } \
}

+ 39
- 0
keyboards/adm42/config.h View File

@ -0,0 +1,39 @@
/* Copyright 2020-2022 Lorenzo Leonini
* SPDX-License-Identifier: GPL-2.0-only
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* 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 "config_common.h"
/* Microchip ADM42 sublicensing */
#define VENDOR_ID 0x04D8
#define PRODUCT_ID 0xE873
#define DEVICE_VER 0x0001
#define MANUFACTURER Lorenzo Leonini
#define PRODUCT ADM42
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
#define DIODE_DIRECTION ROW2COL
#define TAP_CODE_DELAY 1
#define DEBOUNCE 10
#if defined(CONSOLE_ENABLE)
#define DEBUG_MATRIX_SCAN_RATE
#endif

+ 27
- 0
keyboards/adm42/readme.md View File

@ -0,0 +1,27 @@
# ADM42
![ADM42](https://i.imgur.com/pviCQSQh.jpeg)
A compact ergonomic 40% ortholinear keyboard. [More info on ADM42.dev](https://adm42.dev)
* Keyboard Maintainer: [Lorenzo Leonini](https://github.com/lleonini)
* Hardware Supported: ADM42
* Hardware Availability: [Shop](https://shop.adm42.dev)
Make example for this keyboard (after setting up your build environment):
make adm42:default
Flashing example for this keyboard:
make adm42:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB

+ 52
- 0
keyboards/adm42/rev4/config.h View File

@ -0,0 +1,52 @@
/* Copyright 2020-2022 Lorenzo Leonini
* SPDX-License-Identifier: GPL-2.0-only
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* 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/>.
*/
#define MATRIX_COL_PINS { C6, B6, B5, B4, D7, D6, F0, F1, F4, F5, F6, F7 }
#define MATRIX_ROW_PINS { C7, D5, D3, D2 }
#define QMK_LED E6
#define RGB_DI_PIN B7
#define DRIVER_LED_TOTAL 42
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
#define RGB_MATRIX_CENTER { 112, 32 }
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_LED_PROCESS_LIMIT 21
#define RGB_MATRIX_LED_FLUSH_LIMIT 16
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 20
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_SAT_STEP 24
#define RGB_MATRIX_HUE_STEP 8
#define RGB_MATRIX_VAL_STEP 16
#define RGB_MATRIX_SPD_STEP 16
#define ENABLE_RGB_MATRIX_BREATHING
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGBLIGHT_MODE_STATIC_LIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
#define ENABLE_RGB_MATRIX_BAND_VAL
#define ENABLE_RGB_MATRIX_SPLASH

+ 3
- 0
keyboards/adm42/rev4/keymaps/default/config.h View File

@ -0,0 +1,3 @@
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
#define TAPPING_FORCE_HOLD_PER_KEY
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY

+ 210
- 0
keyboards/adm42/rev4/keymaps/default/keymap.c View File

@ -0,0 +1,210 @@
/* Copyright 2020-2022 Lorenzo Leonini
* SPDX-License-Identifier: GPL-2.0-only
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* 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,
_COLEMAKDH,
_SPECIAL,
_EXTRA,
_ADM,
_SETUP,
};
#define LW_GRV LWIN_T(KC_GRV)
#define RW_EQU RWIN_T(KC_EQUAL)
#define RW_BS RWIN_T(KC_BSLS)
#define LC_TAB LCTL_T(KC_TAB)
#define RC_QUT RCTL_T(KC_QUOT)
#define LS_BPC LSFT_T(KC_BSPC)
#define RS_SPC RSFT_T(KC_SPC)
#define LA_BS LALT_T(KC_BSLS)
#define LW_F11 LWIN_T(KC_F11)
#define LC_APP LCTL_T(KC_APP)
#define LA_TOG LALT_T(RGB_TOG)
#define RW_F12 RWIN_T(KC_F12)
#define LLS_ESC LT(_SPECIAL, KC_ESC)
#define LLS_RALT LT(_SPECIAL, KC_RALT)
#define LLE_ENT LT(_EXTRA, KC_ENT)
#define LLA_DEL LT(_ADM, KC_DEL)
#define SETUP MO(_SETUP)
enum custom_keycodes {
REFLASH = SAFE_RANGE,
LC_CIRC,
RC_DLR,
DF_QWER,
DF_COLE,
};
// Not a mistake to have KC_LALT (also) on the right, RALT is kept for compose (LLS_RALT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_adm42_3x12_6(
LW_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RW_EQU,
LC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RC_QUT,
KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT,
LLS_ESC, LS_BPC, LLA_DEL, LLE_ENT, RS_SPC, LLS_RALT
),
[_COLEMAKDH] = LAYOUT_adm42_3x12_6(
LW_GRV, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, RW_EQU,
LC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, RC_QUT,
KC_LALT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_LALT,
LLS_ESC, LS_BPC, LLA_DEL, LLE_ENT, RS_SPC, LLS_RALT
),
[_SPECIAL] = LAYOUT_adm42_3x12_6(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RW_BS,
LC_CIRC, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_EXLM, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MINS, RC_DLR,
_______, KC_AMPR, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_UNDS, KC_ASTR, KC_HASH, KC_PERC, KC_TILD, _______,
KC_ESC, _______, KC_DEL, KC_ENT, _______, KC_RALT
),
[_EXTRA] = LAYOUT_adm42_3x12_6(
LW_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RW_F12,
KC_LCTL, KC_PAUS, KC_INS, KC_VOLD, KC_VOLU, KC_MUTE, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_APP, KC_RCTL,
_______, KC_SLEP, KC_PWR, KC_MSTP, KC_MNXT, KC_MPLY, _______, KC_BRID, KC_BRIU, KC_PSCR, KC_WAKE, _______,
KC_CAPS, _______, _______, _______, _______, KC_CAPS
),
[_ADM] = LAYOUT_adm42_3x12_6(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_B, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUD, RGB_HUI, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, RGB_SPD, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, SETUP, XXXXXXX, XXXXXXX
),
[_SETUP] = LAYOUT_adm42_3x12_6(
REFLASH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, DF_QWER, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
};
bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case RC_QUT:
return true;
default:
return false;
}
}
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LLS_ESC:
case LLS_RALT:
case LLE_ENT:
case LLA_DEL:
return true;
default:
return false;
}
}
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LLS_ESC:
case LLS_RALT:
return true;
default:
return false;
}
}
static uint16_t last_timer = 0;
static int last_key = 0;
bool cleanup_return(uint16_t keycode, keyrecord_t *record, bool value) {
if (record->event.pressed) {
last_key = keycode;
last_timer = timer_read();
}
return value;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#ifdef CONSOLE_ENABLE
uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
#endif
switch (keycode) {
case RC_DLR:
if (record->event.pressed) {
register_code(KC_RCTL);
} else {
unregister_code(KC_RCTL);
if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) {
send_string("$");
}
}
return cleanup_return(keycode, record, false);
case LC_CIRC:
if (record->event.pressed) {
register_code(KC_LCTL);
} else {
unregister_code(KC_LCTL);
if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) {
send_string("^");
}
}
return cleanup_return(keycode, record, false);
case DF_QWER:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
send_string("QWERTY layout");
}
return false;
case DF_COLE:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAKDH);
send_string("COLEMAKDH layout");
}
return false;
case REFLASH:
eeconfig_init();
eeconfig_update_rgb_matrix_default();
writePinLow(QMK_LED);
reset_keyboard();
return false;
default:
return cleanup_return(keycode, record, true);
}
}
void keyboard_pre_init_kb(void) {
setPinOutput(QMK_LED);
writePinHigh(QMK_LED);
}
void keyboard_post_init_kb(void) {
debug_enable = true;
debug_matrix = false;
debug_keyboard = false;
writePinHigh(QMK_LED);
}
void suspend_power_down_kb(void) {
writePinLow(QMK_LED);
}
void suspend_wakeup_init_kb(void) {
writePinHigh(QMK_LED);
}

+ 39
- 0
keyboards/adm42/rev4/rev4.c View File

@ -0,0 +1,39 @@
/* Copyright 2020-2022 Lorenzo Leonini
* SPDX-License-Identifier: GPL-2.0-only
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* 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
led_config_t g_led_config = {
{
{12, 11, 8, 7, 4, 3, 36, 37, 38, 39, 40, 41},
{13, 10, 9, 6, 5, 2, 35, 34, 33, 32, 31, 30},
{14, 15, 16, 17, 18, 1, 24, 25, 26, 27, 28, 29},
{NO_LED, NO_LED, NO_LED, 19, 20, 21, 0, 22, 23, NO_LED, NO_LED, NO_LED}
}, {
{112, 32}, {92, 36}, {94, 25}, {97, 14}, {80, 13}, {77, 24},
{62, 18}, {64, 8}, {49, 6}, {46, 17}, {28, 23}, {30, 13},
{14, 11}, {11, 22}, {8, 32}, {26, 34}, {43, 28}, {61, 29},
{76, 34}, {78, 46}, {97, 49}, {112, 56}, {127, 49}, {146, 46},
{132, 36}, {148, 34}, {164, 29}, {180, 28}, {198, 34}, {215, 32},
{212, 22}, {196, 23}, {178, 17}, {161, 18}, {146, 24}, {130, 25},
{126, 14}, {143, 13}, {159, 8}, {175, 6}, {194, 13}, {210, 11}
}, {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4
}
};

+ 2
- 0
keyboards/adm42/rev4/rules.mk View File

@ -0,0 +1,2 @@
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

+ 22
- 0
keyboards/adm42/rules.mk View File

@ -0,0 +1,22 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
DEBOUNCE_TYPE = sym_eager_pk
LTO_ENABLE = yes
DEFAULT_FOLDER = adm42/rev4

+ 1
- 1
keyboards/adpenrose/kintsugi/keymaps/default/keymap.c View File

@ -45,4 +45,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_SPC, _______, _______, _______, _______, _______
),
};
};

+ 0
- 164
keyboards/adpenrose/kintsugi/keymaps/franky/keymap.c View File

@ -1,164 +0,0 @@
/* Copyright 2021 adpenrose
*
* 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
/* Base layout:
* ,---------------------------------------------------------------------|
* |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace| OLED|
* |--------------------------------------------------------------- |
* |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ OLED|
* |---------------------------------------------------------------------|
* |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter | ENC |
* |---------------------------------------------------------------------|
* |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |Up| M1 |
* |---------------------------------------------------------------------|
* |Ctrl|GUI |Alt | Space |MO(2) |MO(3)| |Lt |Dn |Rt |
* `---------------------------------------------------------------------|'
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[0] = LAYOUT_65_ansi_blocker(
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_LGUI, 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_MUTE,
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_LGUI, KC_LALT, KC_SPC, MO(2), MO(3), KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_65_ansi_blocker(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_SPC, _______, _______, _______, _______, _______
),
};
/* Encoder */
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
static uint8_t selected_layer = 0; /* Used to change the layer using the encoder. */
if (clockwise){
/* Check if left shift is pressed: */
if (selected_layer < 3 && get_mods() & MOD_BIT(KC_LSFT)){
selected_layer ++;
layer_move(selected_layer); /* Jump up one layer. */
} else {
/* If shift isn't pressed, encoder will do this stuff: */
switch (get_highest_layer(layer_state)){
case 3:
tap_code(KC_MNXT);
break;
default:
tap_code(KC_VOLU);
break;
}
}
} else {
/* Check if left shift is pressed: */
if (selected_layer > 0 && get_mods() & MOD_BIT(KC_LSFT)){
selected_layer --;
layer_move(selected_layer); /* Go down one layer. */
} else {
/* If shift isn't pressed, encoder will do this stuff: */
switch (get_highest_layer(layer_state)){
case 3:
tap_code(KC_MPRV);
break;
default:
tap_code(KC_VOLD);
break;
}
}
}
return false;
}
#endif
/* Rotation of the OLED: */
#ifdef OLED_ENABLE
/* Function that renders the kintsugi logo in the desired order. */
static void render_logo(void) {
static const char PROGMEM logo_1[] = {
0x83, 0x84, 0x85, 0x86, 0x87, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0x00
};
static const char PROGMEM logo_2[] = {
0x88, 0x89, 0x8A, 0x8B, 0x8C, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0x00
};
static const char PROGMEM logo_3[] = {
0x8D, 0x8E, 0x8F, 0x90, 0x91, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0x00
};
oled_set_cursor(1,0);
oled_write_P(logo_1, false);
oled_set_cursor(1,4);
oled_write_P(logo_2, false);
oled_set_cursor(1,8);
oled_write_P(logo_3, false);
}
/* Function that renders the current layer to the user. */
void render_layer(void) {
oled_set_cursor(0,12);
switch (get_highest_layer(layer_state)){
case 0:
oled_write_P(PSTR("_BASE"), false);
break;
case 1:
oled_write_P(PSTR("_KCAD"), false);
break;
case 2:
oled_write_P(PSTR("_NMPD"), false);
break;
case 3:
oled_write_P(PSTR("_FNCT"), false);
break;
default:
oled_write_P(PSTR("_OhNo"), false);
break;
}
}
/* The following function displays wpm to the user. */
void render_wpm(void) {
oled_set_cursor(1,14);
oled_write(get_u8_str(get_current_wpm(), '0'), false);
oled_set_cursor(1,15);
oled_write_P(PSTR("WPM"), false);
}
/* Function that renders stuff on the oled: */
bool oled_task_user(void) {
render_logo();
render_layer();
render_wpm();
return false;
}
#endif

+ 0
- 1
keyboards/adpenrose/kintsugi/keymaps/franky/readme.md View File

@ -1 +0,0 @@
# Franky keymap for Kintsugi. Here to serve as a way to test snippets of code.

+ 454
- 0
keyboards/adpenrose/kintsugi/keymaps/snailmap_port/keymap.c View File

@ -0,0 +1,454 @@
/* Copyright 2021 adpenrose
*
* 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
/* Base layout:
* ,---------------------------------------------------------------------|
* |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace| OLED|
* |--------------------------------------------------------------- |
* |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ OLED|
* |---------------------------------------------------------------------|
* |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter | ENC |
* |---------------------------------------------------------------------|
* |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |Up| M1 |
* |---------------------------------------------------------------------|
* |Ctrl|GUI |Alt | Space |MO(2) |MO(3)| |Lt |Dn |Rt |
* `---------------------------------------------------------------------|'
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[0] = LAYOUT_65_ansi_blocker(
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_MUTE,
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_LGUI, KC_LALT, KC_SPC, MO(2), MO(3), KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_65_ansi_blocker(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
/* Encoder */
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
/* Used to change the layer using the encoder. */
static int8_t selected_layer = 0;
if (clockwise){
/* Check if left shift is pressed: */
if (selected_layer < 4 && get_mods() & MOD_BIT(KC_LSFT)){
selected_layer ++;
/* If already on the last layer, jumps back to the first layer: */
if (selected_layer == 4) {
selected_layer = 0;
}
/* Move to the selected layer. */
layer_move(selected_layer);
} else if (get_mods() & MOD_BIT(KC_RSFT)){ /* Check if right shift is pressed: */
switch (get_highest_layer(layer_state)){
default:
/* Go to the next track. */
tap_code(KC_MNXT);
break;
}
} else {
/* If shift isn't pressed, encoder will do this stuff: */
switch (get_highest_layer(layer_state)){
default:
/* Turn up the volume of the system. */
tap_code(KC_VOLU);
break;
}
}
} else {
/* Check if left shift is pressed: */
if (selected_layer > -1 && get_mods() & MOD_BIT(KC_LSFT)){
selected_layer --;
/* If already on the first layer, jumps up to the last layer: */
if (selected_layer == -1) {
selected_layer = 3;
}
/* Move to the selected layer. */
layer_move(selected_layer);
} else if (get_mods() & MOD_BIT(KC_RSFT)){ /* Check if right shift is pressed: */
switch (get_highest_layer(layer_state)){
default:
/* Go to the previous track. */
tap_code(KC_MPRV);
break;
}
} else {
/* If shift isn't pressed, encoder will do this stuff: */
switch (get_highest_layer(layer_state)){
default:
/* Turn down the volume of the system. */
tap_code(KC_VOLD);
break;
}
}
}
return false;
}
#endif
#ifdef OLED_ENABLE
/*=========================================== OLED CONFIGURATION ===========================================*/
bool oled_horizontal = true; // OLED rotation (true = horizontal, false = vertical)
bool graph_direction = false; // Graph movement (true = right to left, false = left to right)
float graph_top_wpm = 100.0; // Minimum WPM required to reach the top of the graph
int graph_refresh = 1000; // In milliseconds, determines the graph-line frequency
int icon_med_wpm = 50; // WPM required to display the medium snail
int icon_fast_wpm = 72; // WPM required to display the fast snail
// Layer names: Should be exactly 5 characters in length if vertical display, or 6 characters if horizontal
#define MA_LAYER_NAME "QWRTY" // Layer 0 name
#define L1_LAYER_NAME "KICAD" // Layer 1 name
#define L2_LAYER_NAME "NMPAD" // Layer 2 name
#define L3_LAYER_NAME "FUNCT" // Layer 3 name
// Constants required for the background render, the graph render and the WPM counter. THESE VALUES SHOULD NOT BE CHANGED.
bool first_loop = true;
int timer = 0;
int wpm_limit = 20;
int max_wpm = -1;
int wpm_icon = -1;
int graph_lines[65];
/*================================================================================================================*/
/* Rotation of the OLED: */
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (oled_horizontal) {
return OLED_ROTATION_180;
} else {
return OLED_ROTATION_270;
}
}
// Toggles pixel on/off, converts horizontal coordinates to vertical equivalent if necessary
static void write_pixel(int x, int y, bool onoff) {
if (oled_horizontal) {
oled_write_pixel(x, y, onoff);
} else {
oled_write_pixel(y, 127 - x, onoff);
}
}
/*====================================== BASE KEYBOARD MATRIX IMAGES =======================================*/
// Draw static background image to OLED (keyboard with no bottom row)
static void render_background(void) {
if (oled_horizontal) {
static const char PROGMEM oled_keymap_horizontal[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x84, 0x80, 0x80, 0x80, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04,
0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00,
0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00,
0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00,
0x80, 0x04, 0x04, 0x04, 0x04, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 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,
0x42, 0x42, 0x02, 0x02, 0x02, 0x02, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00,
0x00, 0x02, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40,
0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42,
0x40, 0x40, 0x40, 0x00, 0x02, 0x00, 0x00, 0x40, 0x40, 0x02, 0x00, 0x00, 0x00, 0x40, 0x42, 0x02,
0x02, 0x02, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(oled_keymap_horizontal, sizeof(oled_keymap_horizontal));
} else {
static const char PROGMEM oled_keymap_vertical[] = {
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(oled_keymap_vertical, sizeof(oled_keymap_vertical));
}
}
/*================================================================================================================*/
/*=============================== PIXEL'S COORDINATES FOR EACH PHYSICAL KEY ================================*/
// Location of OLED keyboard's top left pixel, relative to the display
static const int keymap_template[2] = {46, 0};
// Location of key highlights top left pixels, relative to keymap_template {X, Y, Key length in px}
static int keymap_coords[MATRIX_ROWS][MATRIX_COLS][3] = {
{ {0, 0, 1}, {5, 0, 1}, {10, 0, 1}, {15, 0, 1}, {20, 0, 1}, {25, 0, 1}, {30, 0, 1} },
{ {0, 5, 5}, {9, 5, 1}, {14, 5, 1}, {19, 5, 1}, {24, 5, 1}, {29, 5, 1}, {34, 5, 1} },
{ {0, 10, 6}, {10, 10, 1}, {15, 10, 1}, {20, 10, 1}, {25, 10, 1}, {30, 10, 1}, {35, 10, 1} },
{ {0, 15, 8}, {12, 15, 1}, {17, 15, 1}, {22, 15, 1}, {27, 15, 1}, {32, 15, 1}, {37, 15, 1} },
{ {0, 20, 2}, {6, 20, 2}, {12, 20, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {18, 20, 33} },
{ {35, 0, 1}, {40, 0, 1}, {45, 0, 1}, {50, 0, 1}, {55, 0, 1}, {60, 0, 1}, {65, 0, 8} },
{ {39, 5, 1}, {44, 5, 1}, {49, 5, 1}, {54, 5, 1}, {59, 5, 1}, {64, 5, 1}, {69, 5, 4} },
{ {40, 10, 1}, {45, 10, 1}, {50, 10, 1}, {55, 10, 1}, {60, 10, 1}, {65, 10, 8}, {77, 10, 1} },
{ {42, 15, 1}, {47, 15, 1}, {52, 15, 1}, {57, 15, 1}, {62, 15, 6}, {72, 15, 1}, {77, 15, 1} },
{ {0, 0, 0}, {0, 0, 0}, {55, 20, 2}, {61, 20, 2}, {67, 20, 1}, {72, 20, 1}, {77, 20, 1} },
};
// Toggles pixels surrounding key
static void render_keymap(uint8_t key_row, uint8_t key_col, bool onoff) {
int length = keymap_coords[key_row][key_col][2] + 4;
int left = keymap_coords[key_row][key_col][0] + keymap_template[0];
int top = keymap_coords[key_row][key_col][1] + keymap_template[1];
int right = left + length - 1;
int bottom = top + 4;
// Draw top and bottom walls (horizontal for <length>px)
for (int x = 0; x < length; x++) {
write_pixel(left + x, top, onoff);
write_pixel(left + x, bottom, onoff);
}
// Draw left and right walls (vertical for 5px)
for (int y = 0; y < 5; y++) {
write_pixel(left, top + y, onoff);
write_pixel(right, top + y, onoff);
}
}
/*================================================================================================================*/
/*============================================= LAYER'S NAME ===============================================*/
// Write active layer name
static void render_layer_state(void) {
if (oled_horizontal) {
oled_set_cursor(0, 0);
} else {
oled_set_cursor(0, 15);
}
switch (get_highest_layer(layer_state)) {
case 0:
oled_write_P(PSTR(MA_LAYER_NAME), false);
break;
case 1:
oled_write_P(PSTR(L1_LAYER_NAME), false);
break;
case 2:
oled_write_P(PSTR(L2_LAYER_NAME), false);
break;
case 3:
oled_write_P(PSTR(L3_LAYER_NAME), false);
break;
default:
oled_write("ERROR", false);
break;
}
}
/*================================================================================================================*/
/*==================================== WPM COUNTERS (CURRENT AND MAX) ======================================*/
// Update WPM counters
static void render_wpm_counters(int current_wpm) {
int cursorposition_cur = 2;
int cursorposition_max = 1;
if (oled_horizontal == false) {
cursorposition_cur = 13;
cursorposition_max = 14;
}
oled_set_cursor(0, cursorposition_cur);
oled_write(get_u8_str(get_current_wpm(), '0'), false);
char wpm_counter[4];
wpm_counter[3] = '\0';
wpm_counter[2] = '0' + current_wpm % 10;
wpm_counter[1] = '0' + (current_wpm / 10) % 10;
wpm_counter[0] = '0' + (current_wpm / 100) % 10;
if (current_wpm > max_wpm) {
max_wpm = current_wpm;
wpm_limit = max_wpm + 20;
oled_set_cursor(0, cursorposition_max);
oled_write(wpm_counter, false);
}
}
/*================================================================================================================*/
/*============================================== WPM GRAPH =================================================*/
// Update WPM graph
static void render_wpm_graph(int current_wpm) {
int line_height = ((current_wpm / graph_top_wpm) * 7);
if (line_height > 7) {
line_height = 7;
}
// Count graph line pixels, return if nothing to draw
int pixel_count = line_height;
for (int i = 0; i < 64; i++) {
pixel_count += graph_lines[i];
}
if (pixel_count == 0) {
return;
}
// Shift array elements left or right depending on graph_direction, append new graph line
if (graph_direction) {
for (int i = 0; i < 64; i++) {
graph_lines[i] = graph_lines[i + 1];
}
graph_lines[64] = line_height;
} else {
for (int i = 64; i > 0; i--) {
graph_lines[i] = graph_lines[i - 1];
}
graph_lines[0] = line_height;
}
// Draw all graph lines (left to right, bottom to top)
int draw_count, arrpos;
for (int x = 1; x <= 127; x += 2) {
arrpos = x / 2;
draw_count = graph_lines[arrpos];
for (int y = 31; y >= 25; y--) {
if (draw_count > 0) {
write_pixel(x, y, true);
draw_count--;
} else {
write_pixel(x, y, false);
}
}
}
}
/*================================================================================================================*/
/*======================================== WPM BASED SNAIL ICON ============================================*/
// Update WPM snail icon
static void render_wpm_icon(int current_wpm) {
// wpm_icon is used to prevent unnecessary redraw
if ((current_wpm < icon_med_wpm) && (wpm_icon != 0)) {
wpm_icon = 0;
} else if ((current_wpm >= icon_med_wpm) && (current_wpm < icon_fast_wpm) && (wpm_icon != 1)) {
wpm_icon = 1;
} else if ((current_wpm >= icon_fast_wpm) && (wpm_icon != 2)) {
wpm_icon = 2;
} else {
return;
}
static const char PROGMEM snails[][2][24] = {
{{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0xA0, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00},
{0x40, 0x60, 0x50, 0x4E, 0x51, 0x64, 0x4A, 0x51, 0x54, 0x49, 0x41, 0x62, 0x54, 0x49, 0x46, 0x41, 0x40, 0x30, 0x09, 0x04, 0x02, 0x01, 0x00, 0x00}},
{{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x04, 0x98, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00},
{0x60, 0x50, 0x54, 0x4A, 0x51, 0x64, 0x4A, 0x51, 0x55, 0x49, 0x41, 0x62, 0x54, 0x49, 0x46, 0x41, 0x21, 0x10, 0x0A, 0x08, 0x05, 0x02, 0x00, 0x00}},
{{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x10, 0x10, 0x10, 0x20, 0x40, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00},
{0x60, 0x58, 0x54, 0x62, 0x49, 0x54, 0x52, 0x51, 0x55, 0x49, 0x62, 0x52, 0x4D, 0x45, 0x46, 0x22, 0x21, 0x11, 0x10, 0x0A, 0x08, 0x05, 0x02, 0x00}}
};
if (oled_horizontal) {
oled_set_cursor(3, 1);
oled_write_raw_P(snails[wpm_icon][0], sizeof(snails[wpm_icon][0]));
oled_set_cursor(3, 2);
oled_write_raw_P(snails[wpm_icon][1], sizeof(snails[wpm_icon][1]));
} else {
oled_set_cursor(0, 11);
oled_write_raw_P(snails[wpm_icon][0], sizeof(snails[wpm_icon][0]));
oled_set_cursor(0, 12);
oled_write_raw_P(snails[wpm_icon][1], sizeof(snails[wpm_icon][1]));
}
}
/*================================================================================================================*/
/* Function that renders stuff on the oled */
bool oled_task_user(void) {
// Draw OLED keyboard, preventing redraw.
if (first_loop) {
render_background();
first_loop = false;
}
// Get current WPM
int current_wpm = get_current_wpm();
// Write active layer name to display
render_layer_state();
// Update WPM counters
render_wpm_counters(current_wpm);
// Update WPM snail icon
render_wpm_icon(current_wpm);
// Update WPM graph every graph_refresh milliseconds
if (timer_elapsed(timer) > graph_refresh) {
render_wpm_graph(current_wpm);
timer = timer_read();
}
return false;
}
#endif
// Called by QMK during key processing
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#ifdef OLED_ENABLE
// Toggle pixels surrounding key
render_keymap(record->event.key.row, record->event.key.col, record->event.pressed);
#endif
return true;
}

+ 30
- 0
keyboards/adpenrose/kintsugi/keymaps/snailmap_port/readme.md View File

@ -0,0 +1,30 @@
# SnailMap-ported keymap for the Kintsugi
## Features
- Keyboard matrix that highlights whichever key is currently pressed.
- Little cute snail icon that changes acording to the current WPM.
- Counters for current and max WPM values.
- Active layer name.
- Mini WPM graph.
## How to customize
The `OLED configuration variables` can be used to easily customize the display:
```
oled_horizontal - Horizontal or vertical orientation
graph_direction - Graph movement direction
graph_refresh - Frequency of graph lines
graph_top_wpm - WPM required to reach the top of the graph
icon_med_wpm - WPM required to display the medium snail
icon_fast_wpm - WPM required to display the fast snail
MA_LAYER_NAME - Layer 0 display name
L1_LAYER_NAME - Layer 1 display name
L2_LAYER_NAME - Layer 2 display name
L3_LAYER_NAME - Layer 3 display name
```
___
###### *This keymap is an adaptation designed to work with the Kintsugi keyboard. The original SnailMap keymap was created by [dogspace](https://github.com/dogspace) for the Nibble keyboard, and you can check it [here](https://github.com/qmk/qmk_firmware/tree/master/keyboards/nullbitsco/nibble/keymaps/snailmap).*

+ 5
- 0
keyboards/adpenrose/kintsugi/keymaps/snailmap_port/rules.mk View File

@ -0,0 +1,5 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
WPM_ENABLE = yes
SPACE_CADET_ENABLE = no
MAGIC_ENABLE = no

+ 1
- 1
keyboards/adpenrose/kintsugi/keymaps/via/keymap.c View File

@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi_blocker(
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_LGUI, 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_MUTE,
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_MUTE,
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_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_LEFT, KC_DOWN, KC_RIGHT
),


+ 33
- 26
keyboards/adpenrose/kintsugi/kintsugi.c View File

@ -21,39 +21,36 @@
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) {
return false;
}
} else {
/* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */
switch(get_highest_layer(layer_state)){
case 1:
if (clockwise) {
tap_code(KC_MNXT);
} else {
tap_code(KC_MPRV);
}
break;
default:
if (clockwise){
tap_code(KC_VOLU);
} else{
tap_code(KC_VOLD);
}
break;
switch(get_highest_layer(layer_state)){
case 1:
if (clockwise) {
tap_code(KC_MNXT);
} else {
tap_code(KC_MPRV);
}
break;
default:
if (clockwise){
tap_code(KC_VOLU);
} else{
tap_code(KC_VOLD);
}
break;
}
}
return true;
}
#endif
/* Rotation of the OLED: */
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
return OLED_ROTATION_270;
}
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
/* Kintsugi logo render: */
static void render_logo(void) {
/* Kintsugi logo render: */
static const char PROGMEM logo_1[] = {
0x83, 0x84, 0x85, 0x86, 0x87, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0x00
};
@ -63,12 +60,22 @@ bool oled_task_kb(void) {
static const char PROGMEM logo_3[] = {
0x8D, 0x8E, 0x8F, 0x90, 0x91, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0x00
};
oled_set_cursor(1,3);
oled_set_cursor(0,3);
oled_write_P(logo_1, false);
oled_set_cursor(1,7);
oled_set_cursor(0,7);
oled_write_P(logo_2, false);
oled_set_cursor(1,11);
oled_set_cursor(0,11);
oled_write_P(logo_3, false);
}
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
else {
render_logo();
}
return true;
}
#endif

+ 42
- 42
keyboards/adpenrose/kintsugi/lib/kintsugifont.c View File

@ -148,21 +148,21 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
0xE0, 0xF0, 0xF0, 0xF8, 0xFC, 0xBC,
0x9E, 0x9E, 0xBC, 0xFC, 0xF8, 0xF0,
0xF0, 0xE0, 0xC0, 0xC0, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0xC0, 0xF0, 0xFC, 0xFE, 0x8E,
0xE6, 0x70, 0x00, 0xFC, 0xFE, 0xFE,
0xFC, 0x00, 0x38, 0x78, 0xF0, 0xFE,
0xFE, 0xF0, 0x78, 0x38, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x78, 0x78, 0x78, 0x78, 0x78,
0x78, 0x78, 0x7E, 0x7E, 0xFE, 0xFC,
0xFC, 0x7C, 0x18, 0x00, 0x9E, 0xBC,
0x1C, 0x02, 0x0F, 0x1E, 0x0C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0xF0,
0xF8, 0xFC, 0xBC, 0x9E, 0x9E, 0xBC,
0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0,
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0,
0xFC, 0xFE, 0x8E, 0xE6, 0x70, 0x00,
0xFC, 0xFE, 0xFE, 0xFC, 0x00, 0x38,
0x78, 0xF0, 0xFE, 0xFE, 0xF0, 0x78,
0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x78, 0x78,
0x78, 0x78, 0x78, 0x78, 0x78, 0x7E,
0x7E, 0xFE, 0xFC, 0xFC, 0x7C, 0x18,
0x00, 0x9E, 0xBC, 0x1C, 0x02, 0x0F,
0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -180,20 +180,20 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xE1, 0xE1, 0xE1,
0xE1, 0xE3, 0xE7, 0xE7, 0xE3, 0xE3,
0xFF, 0xFF, 0xE3, 0xE3, 0xE7, 0xE7,
0xE3, 0xE1, 0xE1, 0xE1, 0xE1, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0xF1, 0xFB, 0xFF, 0xFF, 0xE7,
0xF3, 0xF8, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0x87, 0xC7, 0xE7, 0xFF, 0xFF,
0xFF, 0xFF, 0xE7, 0xC7, 0x87, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x8E, 0x9E, 0x9E, 0x1E, 0x1E,
0x1E, 0x1E, 0x1E, 0x1E, 0x9F, 0xDF,
0xFF, 0xFF, 0xFE, 0xCF, 0x0F, 0x0F,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0xE1, 0xE1, 0xE1, 0xE1, 0xE3, 0xE7,
0xE7, 0xE3, 0xE3, 0xFF, 0xFF, 0xE3,
0xE3, 0xE7, 0xE7, 0xE3, 0xE1, 0xE1,
0xE1, 0xE1, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0xF1, 0xFB,
0xFF, 0xFF, 0xE7, 0xF3, 0xF8, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xC7,
0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
0xC7, 0x87, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x8E, 0x9E,
0x9E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
0x1E, 0x9F, 0xDF, 0xFF, 0xFF, 0xFE,
0xCF, 0x0F, 0x0F, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -212,20 +212,20 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0x70, 0x71, 0x73,
0x73, 0x7F, 0x7E, 0x7C, 0x70, 0x70,
0x7F, 0x7F, 0x70, 0x70, 0x7C, 0x7E,
0x7F, 0x73, 0x73, 0x71, 0x70, 0x70,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0x7C, 0x3E, 0x01, 0x3E, 0x61,
0x0E, 0x1E, 0x00, 0x3F, 0x7F, 0x7F,
0x7F, 0x73, 0x73, 0x71, 0x70, 0x77,
0x77, 0x70, 0x71, 0x73, 0x73, 0x73,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1F, 0x7F, 0x7F, 0x78, 0x78,
0x78, 0x78, 0x78, 0x78, 0x79, 0x7B,
0x7B, 0x7B, 0x03, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
0x70, 0x71, 0x73, 0x73, 0x7F, 0x7E,
0x7C, 0x70, 0x70, 0x7F, 0x7F, 0x70,
0x70, 0x7C, 0x7E, 0x7F, 0x73, 0x73,
0x71, 0x70, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0x7C, 0x3E,
0x01, 0x3E, 0x61, 0x0E, 0x1E, 0x00,
0x3F, 0x7F, 0x7F, 0x7F, 0x73, 0x73,
0x71, 0x70, 0x77, 0x77, 0x70, 0x71,
0x73, 0x73, 0x73, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F,
0x7F, 0x78, 0x78, 0x78, 0x78, 0x78,
0x78, 0x79, 0x7B, 0x7B, 0x7B, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,


+ 9
- 0
keyboards/alt34/rev1/config.h View File

@ -44,3 +44,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* Use I2C or Serial, not both */
#define USE_I2C
// #define USE_SERIAL
/* Select hand configuration */
#define EE_HANDS
/* #define MASTER_LEFT */
/* #define MASTER_RIGHT */

+ 0
- 1
keyboards/alt34/rev1/rules.mk View File

@ -19,4 +19,3 @@ AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
LAYOUTS = split_3x5_2
DEFAULT_FOLDER = alt34/rev1

+ 2
- 1
keyboards/annepro2/annepro2.c View File

@ -106,6 +106,7 @@ void keyboard_post_init_kb(void) {
#ifdef RGB_MATRIX_ENABLE
ap2_led_enable();
ap2_led_set_manual_control(1);
#endif
keyboard_post_init_user();
@ -129,7 +130,7 @@ void matrix_scan_kb() {
if(rgb_row_changed[current_rgb_row])
{
rgb_row_changed[current_rgb_row] = 0;
ap2_led_mask_set_row(current_rgb_row);
ap2_led_colors_set_row(current_rgb_row);
}
current_rgb_row = (current_rgb_row + 1) % NUM_ROW;
#endif


+ 27
- 0
keyboards/annepro2/ap2_led.c View File

@ -22,6 +22,7 @@
#include "protocol.h"
ap2_led_t led_mask[KEY_COUNT];
ap2_led_t led_colors[KEY_COUNT];
ap2_led_status_t ap2_led_status;
uint8_t rgb_row_changed[NUM_ROW];
@ -91,6 +92,32 @@ void ap2_led_mask_set_all(void) {
/* Set all keys to a given color */
void ap2_led_mask_set_mono(const ap2_led_t color) { proto_tx(CMD_LED_MASK_SET_MONO, (uint8_t *)&color, sizeof(color), 1); }
void ap2_led_colors_set_key(uint8_t row, uint8_t col, ap2_led_t color) {
uint8_t payload[] = {row, col, color.p.blue, color.p.green, color.p.red, color.p.alpha};
proto_tx(CMD_LED_COLOR_SET_KEY, payload, sizeof(payload), 1);
}
/* Push a whole local row to the shine */
void ap2_led_colors_set_row(uint8_t row) {
uint8_t payload[NUM_COLUMN * sizeof(ap2_led_t) + 1];
payload[0] = row;
memcpy(payload + 1, &led_colors[ROWCOL2IDX(row, 0)], sizeof(*led_colors) * NUM_COLUMN);
proto_tx(CMD_LED_COLOR_SET_ROW, payload, sizeof(payload), 1);
}
/* Synchronize all rows */
void ap2_led_colors_set_all(void) {
for (int row = 0; row < 5; row++) ap2_led_colors_set_row(row);
}
/* Set all keys to a given color */
void ap2_led_colors_set_mono(const ap2_led_t color) { proto_tx(CMD_LED_COLOR_SET_MONO, (uint8_t *)&color, sizeof(color), 1); }
void ap2_led_set_manual_control(uint8_t manual) {
uint8_t payload[] = {manual};
proto_tx(CMD_LED_SET_MANUAL, payload, sizeof(payload), 1);
}
void ap2_led_blink(uint8_t row, uint8_t col, ap2_led_t color, uint8_t count, uint8_t hundredths) {
uint8_t payload[] = {row, col, color.p.blue, color.p.green, color.p.red, color.p.alpha, count, hundredths};
proto_tx(CMD_LED_KEY_BLINK, payload, sizeof(payload), 1);


+ 13
- 0
keyboards/annepro2/ap2_led.h View File

@ -40,6 +40,7 @@ typedef union {
/* Local copy of led_mask, used to override colors on the board */
extern ap2_led_t led_mask[KEY_COUNT];
extern ap2_led_t led_colors[KEY_COUNT];
extern uint8_t rgb_row_changed[NUM_ROW];
/* Handle incoming messages */
@ -66,6 +67,18 @@ void ap2_led_mask_set_all(void);
/* Set all keys to a given color */
void ap2_led_mask_set_mono(ap2_led_t color);
/* Set single key to a given color; alpha controls which is displayed */
void ap2_led_colors_set_key(uint8_t row, uint8_t col, ap2_led_t color);
/* Push a whole local row to the shine */
void ap2_led_colors_set_row(uint8_t row);
/* Synchronize all rows */
void ap2_led_colors_set_all(void);
/* Set all keys to a given color */
void ap2_led_colors_set_mono(ap2_led_t color);
void ap2_led_set_manual_control(uint8_t manual);
/* Blink given key `count` times by masking it with a `color`. Blink takes `hundredths` of a second */
void ap2_led_blink(uint8_t row, uint8_t col, ap2_led_t color, uint8_t count, uint8_t hundredths);


+ 6
- 0
keyboards/annepro2/protocol.h View File

@ -42,6 +42,12 @@ enum {
CMD_LED_KEY_UP = 0x23, /* TODO */
CMD_LED_IAP = 0x24,
/* Manual color control */
CMD_LED_SET_MANUAL = 0x30,
CMD_LED_COLOR_SET_KEY = 0x31,
CMD_LED_COLOR_SET_ROW = 0x32,
CMD_LED_COLOR_SET_MONO = 0x33,
/* LED -> Main */
/* Payload with data to send over HID */
CMD_LED_DEBUG = 0x40,


+ 4
- 4
keyboards/annepro2/rgb_driver.c View File

@ -36,11 +36,11 @@ void init(void) {
void flush(void) {}
void set_color(int index, uint8_t r, uint8_t g, uint8_t b) {
if (r != led_mask[led_pos[index]].p.red ||
g != led_mask[led_pos[index]].p.green ||
b != led_mask[led_pos[index]].p.blue)
if (r != led_colors[led_pos[index]].p.red ||
g != led_colors[led_pos[index]].p.green ||
b != led_colors[led_pos[index]].p.blue)
{
led_mask[led_pos[index]] = (ap2_led_t){
led_colors[led_pos[index]] = (ap2_led_t){
.p.blue = b,
.p.red = r,
.p.green = g,


+ 2
- 0
keyboards/atreus/atreus.h View File

@ -28,6 +28,8 @@
#include "teensy2.h"
#elif KEYBOARD_atreus_promicro
#include "promicro.h"
#elif KEYBOARD_atreus_f103
#include "f103.h"
#endif
// This a shortcut to help you visually see your layout.


+ 28
- 0
keyboards/atreus/f103/chconf.h View File

@ -0,0 +1,28 @@
/* Copyright 2020 QMK
*
* 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/chconf.h -r platforms/chibios/common/configs/chconf.h`
*/
#pragma once
#define CH_CFG_ST_TIMEDELTA 0
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
#include_next <chconf.h>

+ 38
- 0
keyboards/atreus/f103/config.h View File

@ -0,0 +1,38 @@
/* Copyright 2022 DmNosachev
*
* 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 "config_common.h"
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
/* key matrix pins */
#define MATRIX_COL_PINS { B10, B1, B0, A7, A6, B5, B4, B3, A15, A10, A9 }
#define MATRIX_ROW_PINS { A5, A4, A3, A2 }
#define UNUSED_PINS {B12, B13, B14, B15, A8, B6, B7, B8, B9, A1, A0, C15, C14, C13}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW

keyboards/checkerboards/quark_lp/keymaps/mit/config.h → keyboards/atreus/f103/f103.c View File

@ -1,4 +1,4 @@
/* Copyright 2021 Nathan Spears
/* Copyright 2022 DmNosachev
*
* 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 +14,4 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define TAPPING_TOGGLE 2
#include "f103.h"

keyboards/checkerboards/quark_lp/keymaps/via/config.h → keyboards/atreus/f103/f103.h View File

@ -1,4 +1,4 @@
/* Copyright 2021 Nathan Spears
/* Copyright 2022 DmNosachev
*
* 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
@ -15,5 +15,3 @@
*/
#pragma once
#define TAPPING_TOGGLE 2

+ 26
- 0
keyboards/atreus/f103/halconf.h View File

@ -0,0 +1,26 @@
/* Copyright 2020 QMK
*
* 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/
#pragma once
#define HAL_USE_PWM TRUE
#include_next <halconf.h>

+ 30
- 0
keyboards/atreus/f103/mcuconf.h View File

@ -0,0 +1,30 @@
/* Copyright 2020 QMK
*
* 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM2
#define STM32_PWM_USE_TIM2 TRUE
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 FALSE

+ 10
- 0
keyboards/atreus/f103/rules.mk View File

@ -0,0 +1,10 @@
# MCU name
MCU = STM32F103
# Bootloader selection
BOOTLOADER = stm32duino
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
BOOTMAGIC_ENABLE = yes

+ 137
- 0
keyboards/atreus/keymaps/quartz64/keymap.c View File

@ -0,0 +1,137 @@
/*
Copyright 2022 DmNosachev
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
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_QW,
_RS,
_LW
};
#define MC1 COMP_FR_QUOTES
#define MC2 COMP_NBSP_EM_DASH
#define MC3 COMP_NBSP
enum custom_keycodes {
COMP_FR_QUOTES = SAFE_RANGE, // Compose: french quotes
COMP_NBSP_EM_DASH, // Compose: nbsp followed by em dash
COMP_NBSP, // Compose: nbsp
PWD1,
PWD2,
PWD3, // KP password
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
,----------------------------------. ,----------------------------------.
|Q/Alt | W | E | R | T | | Y | U | I | O | P |
|------+------+------+------+------| |------+------+------+------+------|
|A/Ctrl| S | D | F | G | | H | J | K | L |;/Ctrl|
|------+------+------+------+------|------.,------|------+------+------+------+------|
|Z/Shft| X | C | V | B |Bkspc ||Delete| N | M | , | . |?/Shft|
|------+------+------+------+------| || |------+------+------+------+------|
| ~ | Tab | - | GUI |Spc/LW|------'`------|Ent/RS| |\ | [ | ] | "' |
`----------------------------------' `----------------------------------'
*/
[_QW] = LAYOUT( /* QWERTY */
LALT_T(KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
LCTL_T(KC_A), KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RCTL_T(KC_SCLN),
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
KC_GRV, KC_TAB, KC_MINS, KC_LGUI, LT(_LW, KC_SPC), KC_BSPC, KC_DEL, LT(_RS, KC_ENT), KC_BSLS, KC_LBRC, KC_RBRC, KC_QUOT
),
/*
,----------------------------------. ,----------------------------------.
| PrnSc| pwd1 | up | pwd2 | PgUp | | Home | F7 | F8 | F9 | |
|------+------+------+------+------| |------+------+------+------+------|
| trns | left | down | right| PgDn | | End | F4 | F5 | F6 | trns |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| trns | MC2 | MC3 | ( | ) | || | AltGr| F1 | F2 | F3 | trns |
|------+------+------+------+------| || |------+------+------+------+------|
| trns | C+S | Ins | MC1 | trns |------'`------| trns | F10 | F11 | F12 | trns |
`----------------------------------' `----------------------------------'
*/
[_RS] = LAYOUT( /* RAISE */
KC_PSCR, PWD1, KC_UP, PWD2, KC_PGUP, KC_HOME, KC_F7, KC_F8, KC_F9, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_F4, KC_F5, KC_F6, _______,
_______, MC2, MC3, KC_LPRN, KC_RPRN, KC_RALT, KC_F1, KC_F2, KC_F3, _______,
_______, LCTL(KC_LSFT), _______, MC1, _______, _______, _______, _______, KC_F10, KC_F11, KC_F12, _______
),
/*
,----------------------------------. ,----------------------------------.
| ! | @ | # | $ | % | | / | 7 | 8 | 9 | . |
|------+------+------+------+------| |------+------+------+------+------|
| trns | ^ | & | * | PWD3 | | * | 4 | 5 | 6 | trns |
|------+------+------+------+------|------.,------|------+------+------+------+------|
| trns |r_tog | r_hue| r_sat| r_val| || | + | 1 | 2 | 3 | trns |
|------+------+------+------+------| || |------+------+------+------+------|
| trns | Esc |RESET |capslk| trns |------'`------| trns | 0 | - | += | trns |
`----------------------------------' `----------------------------------'
*/
[_LW] = LAYOUT( /* LOWER */
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PSLS, KC_7, KC_8, KC_9, KC_PDOT,
_______, KC_CIRC, KC_AMPR, KC_ASTR, PWD3, KC_PAST, KC_4, KC_5, KC_6, _______,
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_PPLS, KC_1, KC_2, KC_3, _______,
_______, KC_ESC , RESET, KC_CAPS, _______, _______, _______, _______, KC_0, KC_PMNS, KC_EQL, _______
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case MC1: /* French quotes */
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_RALT) SS_DELAY(100) "<<" SS_DELAY(100) SS_TAP(X_RALT) SS_DELAY(100) ">>" SS_TAP(X_LEFT));
}
break;
case MC2: /* NB-space + mdash + space */
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_RALT) SS_DELAY(100) " " SS_DELAY(100) SS_TAP(X_RALT) SS_DELAY(100) "--- ");
}
break;
case MC3: /* NB-space */
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_RALT) SS_DELAY(100) " ");
}
break;
case PWD1:
if (record->event.pressed) {
SEND_STRING("NakedLunch1991\n");
}
break;
case PWD2:
if (record->event.pressed) {
SEND_STRING("O94nx4sUWHc4akud\n");
}
break;
case PWD3:
if (record->event.pressed) {
SEND_STRING("Q123qQ123q\n");
}
break;
}
return true;
};

+ 2
- 1
keyboards/atreus/readme.md View File

@ -8,7 +8,7 @@ Keyboard Maintainer: [Phil Hagelberg](https://github.com/technomancy)
Hardware Supported: Atreus, PCB-based or hand-wired
Hardware Availability: https://atreus.technomancy.us
These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2 (usually hand-wired), one powered by an A-Star (usually using a PCB). You will need to use different `make` commands depending on the variant you have; see examples below.
These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in several variants: powered by a Teensy 2 or STM32F103C8T6 based MCU board (usually hand-wired), powered by an A-Star or ProMicro (usually using a PCB). You will need to use different `make` commands depending on the variant you have; see examples below.
Make example for this keyboard (after setting up your build environment):
@ -19,6 +19,7 @@ If you would like to use one of the alternative controllers:
make atreus/astar:default:flash
make atreus/teensy2:default:flash
make atreus/promicro:default:flash
make atreus/f103:default:flash
If your keyboard layout is a mirror image of what you expected (i.e. you do not get QWERTY on the left but YTREWQ on the right), then you have an A-Star powered Atreus (older than March 2016) with PCB labels facing *down* instead of up. Specify that by adding `PCBDOWN=yes` to your `make` commands, e.g.


+ 15
- 0
keyboards/atset/at6/at6.c View File

@ -0,0 +1,15 @@
/*
* 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 "at6.h"

+ 24
- 0
keyboards/atset/at6/at6.h View File

@ -0,0 +1,24 @@
/*
* 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"
#define LAYOUT( \
k00, k01, k02, \
k10, k11, k12 \
) \
{ \
{ k00, k01, k02 }, \
{ k10, k11, k12 } \
}

+ 76
- 0
keyboards/atset/at6/config.h View File

@ -0,0 +1,76 @@
/*
* 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 "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED // Atset
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER Atset
#define PRODUCT AT6
/* Key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { D2, D1 }
#define MATRIX_COL_PINS { B6, B5, B4 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* 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
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
*/
// #define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*/
//#define FORCE_NKRO

+ 9
- 0
keyboards/atset/at6/info.json View File

@ -0,0 +1,9 @@
{
"keyboard_name": "AT6",
"maintainer": "atset",
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}]
}
}
}

+ 39
- 0
keyboards/atset/at6/keymaps/default/keymap.c View File

@ -0,0 +1,39 @@
/*
* 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_7, KC_8, KC_9,
KC_4, KC_5, KC_6
),
[1] = LAYOUT(
KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO
),
[2] = LAYOUT(
KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO
)
};

+ 39
- 0
keyboards/atset/at6/keymaps/via/keymap.c View File

@ -0,0 +1,39 @@
/*
* 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_4 , KC_5 , KC_6,
KC_1 , KC_2 , KC_3
),
[1] =
LAYOUT(
KC_NO , KC_NO, KC_NO,
KC_NO , KC_NO, KC_NO
),
[2] =
LAYOUT(
KC_NO , KC_NO, KC_NO,
KC_NO , KC_NO, KC_NO
),
[3] =
LAYOUT(
KC_NO , KC_NO, KC_NO,
KC_NO , KC_NO, KC_NO
)
};

+ 25
- 0
keyboards/atset/at6/readme.md View File

@ -0,0 +1,25 @@
# ATSET AT6
A special 6 key keyboard powered by QMK.
* Keyboard Maintainer: [ATSET](https://github.com/anubhavd7)
* Hardware Supported: ATmega32U4
* Hardware Availability: Interest Check
Make example for this keyboard (after setting up your build environment):
make atset/at6:default
Flashing example for this keyboard:
make atset/at6: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 `RESET` if it is available

+ 18
- 0
keyboards/atset/at6/rules.mk View File

@ -0,0 +1,18 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # 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

+ 2
- 2
keyboards/basketweave/config.h View File

@ -50,8 +50,8 @@
*/
// #define GRAVE_ESC_CTRL_OVERRIDE
#define ENCODERS_PAD_A { C0 }
#define ENCODERS_PAD_B { D7 }
#define ENCODERS_PAD_A { D7 }
#define ENCODERS_PAD_B { C0 }
#define ENCODER_RESOLUTION 4
#define TAP_CODE_DELAY 10


+ 56
- 0
keyboards/bbrfkr/dynamis/config.h View File

@ -0,0 +1,56 @@
/* Copyright 2022 bbrfkr
*
* 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 "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x6262
#define PRODUCT_ID 0x0001
#define DEVICE_VER 0x0001
#define MANUFACTURER bbrfkr
#define PRODUCT dynamis
/* key matrix */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
#define MATRIX_ROW_PINS { B6, B4, D6, D5, D1, C6, B5, D7, D4, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
/* rgb num */
#define RGBLED_NUM 10
#define RGB_DI_PIN D3
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* rotary encoder */
#define ENCODERS_PAD_A { B7 }
#define ENCODERS_PAD_B { E6 }
#define PMW3360_CS_PIN SPI_SS_PIN
#define POINTING_DEVICE_INVERT_Y

+ 33
- 0
keyboards/bbrfkr/dynamis/dynamis.c View File

@ -0,0 +1,33 @@
/* Copyright 2022 bbrfkr
*
* 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 "dynamis.h"
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) {
return false;
}
if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(KC_WH_D);
} else {
tap_code(KC_WH_U);
}
}
return false;
}
#endif

+ 59
- 0
keyboards/bbrfkr/dynamis/dynamis.h View File

@ -0,0 +1,59 @@
/* Copyright 2022 bbrfkr
*
* 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_ansi( \
C00, C01, C02, C03, C04, C05, C06, C56, C55, C54, C53, C52, C51, C50, C90, \
C10, C11, C12, C13, C14, C15, C16, C66, C65, C64, C63, C62, C61, C60, \
C20, C21, C22, C23, C24, C25, C26, C76, C75, C74, C73, C72, C70, \
C30, C31, C32, C33, C34, C35, C36, C86, C85, C84, C83, C82, C81, C80, C91, \
C40, C41, C42, C43, C44, C45, C46, C96, C95, C94, C93, C92 \
) \
{ \
{ C00, C01, C02, C03, C04, C05, C06 }, \
{ C10, C11, C12, C13, C14, C15, C16 }, \
{ C20, C21, C22, C23, C24, C25, C26 }, \
{ C30, C31, C32, C33, C34, C35, C36 }, \
{ C40, C41, C42, C43, C44, C45, C46 }, \
{ C50, C51, C52, C53, C54, C55, C56 }, \
{ C60, C61, C62, C63, C64, C65, C66 }, \
{ C70, KC_NO, C72, C73, C74, C75, C76 }, \
{ C80, C81, C82, C83, C84, C85, C86 }, \
{ C90, C91, C92, C93, C94, C95, C96 } \
}
#define LAYOUT_iso( \
C00, C01, C02, C03, C04, C05, C06, C56, C55, C54, C53, C52, C51, C50, C90, \
C10, C11, C12, C13, C14, C15, C16, C66, C65, C64, C63, C62, C61, \
C20, C21, C22, C23, C24, C25, C26, C76, C75, C74, C73, C72, C71, C70, \
C30, C31, C32, C33, C34, C35, C36, C86, C85, C84, C83, C82, C81, C80, C91, \
C40, C41, C42, C43, C44, C45, C46, C96, C95, C94, C93, C92 \
) \
{ \
{ C00, C01, C02, C03, C04, C05, C06 }, \
{ C10, C11, C12, C13, C14, C15, C16 }, \
{ C20, C21, C22, C23, C24, C25, C26 }, \
{ C30, C31, C32, C33, C34, C35, C36 }, \
{ C40, C41, C42, C43, C44, C45, C46 }, \
{ C50, C51, C52, C53, C54, C55, C56 }, \
{ KC_NO, C61, C62, C63, C64, C65, C66 }, \
{ C70, C71, C72, C73, C74, C75, C76 }, \
{ C80, C81, C82, C83, C84, C85, C86 }, \
{ C90, C91, C92, C93, C94, C95, C96 } \
}

+ 733
- 0
keyboards/bbrfkr/dynamis/info.json View File

@ -0,0 +1,733 @@
{
"keyboard_name": "dynamis",
"url": "https://github.com/bbrfkr/keyboards",
"maintainer": "bbrfkr",
"layouts": {
"LAYOUT_ansi": {
"layout": [
{
"label": "`",
"x": 0,
"y": 0
},
{
"label": "F1",
"x": 1,
"y": 0
},
{
"label": "F2",
"x": 2,
"y": 0
},
{
"label": "F3",
"x": 3,
"y": 0
},
{
"label": "F4",
"x": 4,
"y": 0
},
{
"label": "F5",
"x": 5,
"y": 0
},
{
"label": "F6",
"x": 6,
"y": 0
},
{
"label": "F7",
"x": 7,
"y": 0
},
{
"label": "F8",
"x": 8,
"y": 0
},
{
"label": "F9",
"x": 9,
"y": 0
},
{
"label": "F10",
"x": 10,
"y": 0
},
{
"label": "F11",
"x": 11,
"y": 0
},
{
"label": "F12",
"x": 12,
"y": 0
},
{
"label": "Back space",
"x": 13,
"y": 0
},
{
"label": "Delete",
"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": "\\",
"x": 13.5,
"y": 1,
"w": 1.5
},
{
"label": "CapsLock",
"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
},
{
"x": 0,
"y": 3,
"w": 1.25
},
{
"label": "Shift",
"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": "Raise",
"x": 14,
"y": 3
},
{
"label": "Up",
"x": 15.25,
"y": 3
},
{
"label": "Ctrl",
"x": 0,
"y": 4,
"w": 1.25
},
{
"label": "Super",
"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": 2.25
},
{
"label": "Lower",
"x": 6,
"y": 4,
"w": 1.25
},
{
"label": "Raise",
"x": 7.25,
"y": 4,
"w": 2.75
},
{
"label": "Alt",
"x": 10,
"y": 4,
"w": 1.25
},
{
"label": "Super",
"x": 11.25,
"y": 4,
"w": 1.25
},
{
"label": "Ctrl",
"x": 12.5,
"y": 4,
"w": 1.25
},
{
"label": "Left",
"x": 14.25,
"y": 4
},
{
"label": "Down",
"x": 15.25,
"y": 4
},
{
"label": "Right",
"x": 16.25,
"y": 4
}
]
},
"LAYOUT_iso": {
"layout": [
{
"label": "`",
"x": 0,
"y": 0
},
{
"label": "F1",
"x": 1,
"y": 0
},
{
"label": "F2",
"x": 2,
"y": 0
},
{
"label": "F3",
"x": 3,
"y": 0
},
{
"label": "F4",
"x": 4,
"y": 0
},
{
"label": "F5",
"x": 5,
"y": 0
},
{
"label": "F6",
"x": 6,
"y": 0
},
{
"label": "F7",
"x": 7,
"y": 0
},
{
"label": "F8",
"x": 8,
"y": 0
},
{
"label": "F9",
"x": 9,
"y": 0
},
{
"label": "F10",
"x": 10,
"y": 0
},
{
"label": "F11",
"x": 11,
"y": 0
},
{
"label": "F12",
"x": 12,
"y": 0
},
{
"label": "Back space",
"x": 13,
"y": 0
},
{
"label": "Delete",
"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": "Enter",
"x": 13.75,
"y": 1,
"w": 1.25,
"h": 2
},
{
"label": "CapsLock",
"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
},
{
"x": 0,
"y": 3,
"w": 1.25
},
{
"label": "Shift",
"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": "Raise",
"x": 14,
"y": 3
},
{
"label": "Up",
"x": 15.25,
"y": 3
},
{
"label": "Ctrl",
"x": 0,
"y": 4,
"w": 1.25
},
{
"label": "Super",
"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": 2.25
},
{
"label": "Lower",
"x": 6,
"y": 4,
"w": 1.25
},
{
"label": "Raise",
"x": 7.25,
"y": 4,
"w": 2.75
},
{
"label": "Alt",
"x": 10,
"y": 4,
"w": 1.25
},
{
"label": "Super",
"x": 11.25,
"y": 4,
"w": 1.25
},
{
"label": "Ctrl",
"x": 12.5,
"y": 4,
"w": 1.25
},
{
"label": "Left",
"x": 14.25,
"y": 4
},
{
"label": "Down",
"x": 15.25,
"y": 4
},
{
"label": "Right",
"x": 16.25,
"y": 4
}
]
}
}
}

+ 59
- 0
keyboards/bbrfkr/dynamis/keymaps/default/keymap.c View File

@ -0,0 +1,59 @@
/* Copyright 2022 bbrfkr
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
_SETTINGS
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_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_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_TAB, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LOWER] = LAYOUT_ansi(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, KC_TRNS,
KC_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_RAISE] = LAYOUT_ansi(
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_SETTINGS] = LAYOUT_ansi(
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

+ 59
- 0
keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c View File

@ -0,0 +1,59 @@
/* Copyright 2022 bbrfkr
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
_SETTINGS
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_iso(
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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_TAB, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LOWER] = LAYOUT_iso(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS,
KC_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_RAISE] = LAYOUT_iso(
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_SETTINGS] = LAYOUT_iso(
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

+ 59
- 0
keyboards/bbrfkr/dynamis/keymaps/via/keymap.c View File

@ -0,0 +1,59 @@
/* Copyright 2022 bbrfkr
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
_SETTINGS
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_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_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_TAB, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LOWER] = LAYOUT_ansi(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, KC_TRNS,
KC_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_RAISE] = LAYOUT_ansi(
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_SETTINGS] = LAYOUT_ansi(
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

+ 1
- 0
keyboards/bbrfkr/dynamis/keymaps/via/rules.mk View File

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

+ 29
- 0
keyboards/bbrfkr/dynamis/readme.md View File

@ -0,0 +1,29 @@
# dynamis
## general information
![dynamis](https://i.imgur.com/q2C3D2ul.jpg)
Gasket mounted 65% row staggered keyboard integrated a trackball
* Keyboard Maintainer: [bbrfkr](https://github.com/bbrfkr/)
* Hardware Supported: dynamis PCBs
* Hardware Availability: http://github.com/bbrfkr/keyboards
## bootloader
Enter the bootloader in 2 ways:
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
## build and flash firmware
Make example for this keyboard (after setting up your build environment):
make bbrfkr/dynamis:default
Flashing example for this keyboard:
make bbrfkr/dynamis: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).

+ 23
- 0
keyboards/bbrfkr/dynamis/rules.mk View File

@ -0,0 +1,23 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = no
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = pmw3360
ENCODER_ENABLE = yes
LTO_ENABLE = yes

+ 17
- 0
keyboards/blaster75/blaster75.c View File

@ -0,0 +1,17 @@
/* Copyright 2021 Altain
*
* 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 "blaster75.h"

+ 97
- 0
keyboards/blaster75/blaster75.h View File

@ -0,0 +1,97 @@
/* Copyright 2021 Altain
*
* 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"
/* This section is to help viewers visually clarify the physical layout of Blaster 75 PCB.
ANSI Layout :
* ,----------------------------------------------------------------
* | ESC| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|PSC|INS|
* ,---------------------------------------------------------------|
* | ` |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |HOME|
* |---------------------------------------------------------------|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL|
* |---------------------------------------------------------------|
* | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | ENTER| END|
* |---------------------------------------------------------------|
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / |RSHFT | | |
* |---------------------------------------------------------------|
* |LCTL|LWIN|LALT| 6.25U SPACE |RALT|RCTL| | | |
* `----------------------------------------------------------------
*
*
7U Spacebar Layout :
* ,----------------------------------------------------------------
* | ESC| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|PSC|INS|
* ,---------------------------------------------------------------|
* | ` |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |HOME|
* |---------------------------------------------------------------|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL|
* |---------------------------------------------------------------|
* | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | ENTER| END|
* |---------------------------------------------------------------|
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / |RSHFT | | |
* |---------------------------------------------------------------|
* | LCTL |LWIN| LALT | 7U SPACE | RCTL | | | |
* `----------------------------------------------------------------
*
* */
#define XXX KC_NO
// BLASTER75 DEFAULT ANSI LAYOUT
// 6.25U SPACEBAR
// BOTTOM ROW 1.25 , 1.25 , 1.25 , 6.25 , 1.25 , 1.25 CONFIGURATION
#define LAYOUT( \
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, K1C, K1D, K1E, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4B, K4C, K4D, \
K50, K51, K52, K55, K59, K5B, K5C, K5D, K5E \
) { \
{ 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, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, XXX, K4B, K4C, K4D, XXX }, \
{ K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, XXX, K5B, K5C, K5D, K5E } \
}
// BLASTER75 7U LAYOUT
// 7U SPACEBAR
// BOTTOM ROW 1.5 , 1 , 1.5 , 7 , 1.5 CONFIGURATION
#define LAYOUT_7u( \
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, K1C, K1D, K1E, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4B, K4C, K4D, \
K50, K51, K52, K55, K5B, K5C, K5D, K5E \
) { \
{ 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, K1C, K1D, K1E }, \
{ K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, XXX, K4B, K4C, K4D, XXX }, \
{ K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E } \
}

+ 44
- 0
keyboards/blaster75/config.h View File

@ -0,0 +1,44 @@
/*
Copyright 2021 Altain
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 "config_common.h"
#define VENDOR_ID 0xA122
#define PRODUCT_ID 0xB075
#define DEVICE_VER 0x0001
#define MANUFACTURER Altain
#define PRODUCT Blaster75
/* Matrix Size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
/* Matrix Pinouts */
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B0, B4, B5, B6, B7, C6, C7, D0, D1, D2, D3, D4, D5, D6, D7 }
#define UNUSED_PINS
/* Diode Direction */
#define DIODE_DIRECTION COL2ROW
/* Debounce Setting */
#define DEBOUNCE 5

+ 186
- 0
keyboards/blaster75/info.json View File

@ -0,0 +1,186 @@
{
"keyboard_name": "Blaster 75",
"url": "",
"maintainer": "Altain",
"layouts": {
"LAYOUT": {
"layout": [
{"label": "ESC", "y": 0,"x": 0},
{"label": "F1", "y": 0,"x": 1.25},
{"label": "F2", "y": 0,"x": 2.25},
{"label": "F3", "y": 0,"x": 3.25},
{"label": "F4", "y": 0,"x": 4.25},
{"label": "F5", "y": 0,"x": 5.5},
{"label": "F6", "y": 0,"x": 6.5},
{"label": "F7", "y": 0,"x": 7.5},
{"label": "F8", "y": 0,"x": 8.5},
{"label": "F9", "y": 0,"x": 9.75},
{"label": "F10", "y": 0,"x": 10.75},
{"label": "F11", "y": 0,"x": 11.75},
{"label": "F12", "y": 0,"x": 12.75},
{"label": "PrtSc", "y": 0,"x": 14},
{"label": "INS", "y": 0,"x": 15},
{"label": "~", "y": 1.25,"x": 0},
{"label": "!", "y": 1.25,"x": 1},
{"label": "@", "y": 1.25,"x": 2},
{"label": "#", "y": 1.25,"x": 3},
{"label": "$", "y": 1.25,"x": 4},
{"label": "%", "y": 1.25,"x": 5},
{"label": "^", "y": 1.25,"x": 6},
{"label": "&", "y": 1.25,"x": 7},
{"label": "*", "y": 1.25,"x": 8},
{"label": "(", "y": 1.25,"x": 9},
{"label": ")", "y": 1.25,"x": 10},
{"label": "_", "y": 1.25,"x": 11},
{"label": "+", "y": 1.25,"x": 12},
{"label": "Backspace", "y": 1.25,"x": 13, "w": 2},
{"label": "Home", "y": 1.25,"x": 15},
{"label": "Tab", "y": 2.25,"x": 0, "w": 1.5},
{"label": "Q", "y": 2.25,"x": 1.5},
{"label": "W", "y": 2.25,"x": 2.5},
{"label": "E", "y": 2.25,"x": 3.5},
{"label": "R", "y": 2.25,"x": 4.5},
{"label": "T", "y": 2.25,"x": 5.5},
{"label": "Y", "y": 2.25,"x": 6.5},
{"label": "U", "y": 2.25,"x": 7.5},
{"label": "I", "y": 2.25,"x": 8.5},
{"label": "O", "y": 2.25,"x": 9.5},
{"label": "P", "y": 2.25,"x": 10.5},
{"label": "{", "y": 2.25,"x": 11.5},
{"label": "}", "y": 2.25,"x": 12.5},
{"label": "|", "y": 2.25,"x": 13.5, "w": 1.5},
{"label": "Del", "y": 2.25,"x": 15},
{"label": "Caps Lock", "y": 3.25,"x": 0, "w": 1.75},
{"label": "A", "y": 3.25,"x": 1.75},
{"label": "S", "y": 3.25,"x": 2.75},
{"label": "D", "y": 3.25,"x": 3.75},
{"label": "F", "y": 3.25,"x": 4.75},
{"label": "G", "y": 3.25,"x": 5.75},
{"label": "H", "y": 3.25,"x": 6.75},
{"label": "J", "y": 3.25,"x": 7.75},
{"label": "K", "y": 3.25,"x": 8.75},
{"label": "L", "y": 3.25,"x": 9.75},
{"label": ":", "y": 3.25,"x": 10.75},
{"label": "\"", "y": 3.25,"x": 11.75},
{"label": "Enter", "y": 3.25,"x": 12.75, "w": 2.25},
{"label": "End", "y": 3.25,"x": 15},
{"label": "Shift", "y": 4.25,"x": 0, "w": 2.25},
{"label": "Z", "y": 4.25,"x": 2.25},
{"label": "X", "y": 4.25,"x": 3.25},
{"label": "C", "y": 4.25,"x": 4.25},
{"label": "V", "y": 4.25,"x": 5.25},
{"label": "B", "y": 4.25,"x": 6.25},
{"label": "N", "y": 4.25,"x": 7.25},
{"label": "M", "y": 4.25,"x": 8.25},
{"label": "<", "y": 4.25,"x": 9.25},
{"label": ">", "y": 4.25,"x": 10.25},
{"label": "?", "y": 4.25,"x": 11.25},
{"label": "Shift", "y": 4.25,"x": 12.25, "w": 1.75},
{"label": "\u2191", "y": 4.25,"x": 14},
{"label":"Ctrl", "y":5.25, "x":0, "w":1.25},
{"label":"Win", "y":5.25, "x":1.25, "w": 1.25},
{"label":"Alt", "y":5.25, "x":2.5, "w":1.25},
{"label":"Spacebar", "y":5.25, "x":3.75, "w":6.25},
{"label":"Win", "y":5.25, "x":10, "w":1.25},
{"label":"Alt", "y":5.25, "x":11.25, "w":1.25},
{"label":"\u2190", "y":5.25, "x":13},
{"label":"\u2193", "y":5.25, "x":14},
{"label":"\u2192", "y":5.25, "x":15}
]
},
"LAYOUT_7u": {
"layout": [
{"label": "ESC", "y": 0,"x": 0},
{"label": "F1", "y": 0,"x": 1.25},
{"label": "F2", "y": 0,"x": 2.25},
{"label": "F3", "y": 0,"x": 3.25},
{"label": "F4", "y": 0,"x": 4.25},
{"label": "F5", "y": 0,"x": 5.5},
{"label": "F6", "y": 0,"x": 6.5},
{"label": "F7", "y": 0,"x": 7.5},
{"label": "F8", "y": 0,"x": 8.5},
{"label": "F9", "y": 0,"x": 9.75},
{"label": "F10", "y": 0,"x": 10.75},
{"label": "F11", "y": 0,"x": 11.75},
{"label": "F12", "y": 0,"x": 12.75},
{"label": "PrtSc", "y": 0,"x": 14},
{"label": "INS", "y": 0,"x": 15},
{"label": "~", "y": 1.25,"x": 0},
{"label": "!", "y": 1.25,"x": 1},
{"label": "@", "y": 1.25,"x": 2},
{"label": "#", "y": 1.25,"x": 3},
{"label": "$", "y": 1.25,"x": 4},
{"label": "%", "y": 1.25,"x": 5},
{"label": "^", "y": 1.25,"x": 6},
{"label": "&", "y": 1.25,"x": 7},
{"label": "*", "y": 1.25,"x": 8},
{"label": "(", "y": 1.25,"x": 9},
{"label": ")", "y": 1.25,"x": 10},
{"label": "_", "y": 1.25,"x": 11},
{"label": "+", "y": 1.25,"x": 12},
{"label": "Backspace", "y": 1.25,"x": 13, "w": 2},
{"label": "Home", "y": 1.25,"x": 15},
{"label": "Tab", "y": 2.25,"x": 0, "w": 1.5},
{"label": "Q", "y": 2.25,"x": 1.5},
{"label": "W", "y": 2.25,"x": 2.5},
{"label": "E", "y": 2.25,"x": 3.5},
{"label": "R", "y": 2.25,"x": 4.5},
{"label": "T", "y": 2.25,"x": 5.5},
{"label": "Y", "y": 2.25,"x": 6.5},
{"label": "U", "y": 2.25,"x": 7.5},
{"label": "I", "y": 2.25,"x": 8.5},
{"label": "O", "y": 2.25,"x": 9.5},
{"label": "P", "y": 2.25,"x": 10.5},
{"label": "{", "y": 2.25,"x": 11.5},
{"label": "}", "y": 2.25,"x": 12.5},
{"label": "|", "y": 2.25,"x": 13.5, "w": 1.5},
{"label": "Del", "y": 2.25,"x": 15},
{"label": "Caps Lock", "y": 3.25,"x": 0, "w": 1.75},
{"label": "A", "y": 3.25,"x": 1.75},
{"label": "S", "y": 3.25,"x": 2.75},
{"label": "D", "y": 3.25,"x": 3.75},
{"label": "F", "y": 3.25,"x": 4.75},
{"label": "G", "y": 3.25,"x": 5.75},
{"label": "H", "y": 3.25,"x": 6.75},
{"label": "J", "y": 3.25,"x": 7.75},
{"label": "K", "y": 3.25,"x": 8.75},
{"label": "L", "y": 3.25,"x": 9.75},
{"label": ":", "y": 3.25,"x": 10.75},
{"label": "\"", "y": 3.25,"x": 11.75},
{"label": "Enter", "y": 3.25,"x": 12.75, "w": 2.25},
{"label": "End", "y": 3.25,"x": 15},
{"label": "Shift", "y": 4.25,"x": 0, "w": 2.25},
{"label": "Z", "y": 4.25,"x": 2.25},
{"label": "X", "y": 4.25,"x": 3.25},
{"label": "C", "y": 4.25,"x": 4.25},
{"label": "V", "y": 4.25,"x": 5.25},
{"label": "B", "y": 4.25,"x": 6.25},
{"label": "N", "y": 4.25,"x": 7.25},
{"label": "M", "y": 4.25,"x": 8.25},
{"label": "<", "y": 4.25,"x": 9.25},
{"label": ">", "y": 4.25,"x": 10.25},
{"label": "?", "y": 4.25,"x": 11.25},
{"label": "Shift", "y": 4.25,"x": 12.25, "w": 1.75},
{"label": "\u2191", "y": 4.25,"x": 14},
{"label":"Ctrl", "y":5.25, "x": 0, "w":1.5},
{"label":"Win", "y":5.25, "x":1.5},
{"label":"Alt", "y":5.25, "x":2.5, "w":1.5},
{"label":"Spacebar", "y":5.25, "x":4, "w":7},
{"label":"Alt", "y":5.25, "x":11, "w":1.5},
{"label":"\u2190", "y":5.25, "x":13},
{"label":"\u2193", "y":5.25, "x":14},
{"label":"\u2192", "y":5.25, "x":15}
]
}
}
}

+ 37
- 0
keyboards/blaster75/keymaps/default/keymap.c View File

@ -0,0 +1,37 @@
/* Copyright 2021 by Altain
*
* 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS,
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_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
KC_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_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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = 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, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

+ 7
- 0
keyboards/blaster75/keymaps/default/readme.md View File

@ -0,0 +1,7 @@
![Blaster75 Layout Image](https://i.imgur.com/qrvNWCoh.png)
This is the default keymap intended for Blaster 75 Custom Keyboard by ALTAiN.
This layout overall follows ANSI layout except the bottom rows.
Should the user wishes to, the bottom layout can be configured as the following:
1) 1.25 / 1.25 / 1.25 / 6.26u Spacebar / 1.25 / 1.25 , or
2) 1.5u / 1u / 1.5u / 7u Spacebar / 1.5u

+ 51
- 0
keyboards/blaster75/keymaps/via/keymap.c View File

@ -0,0 +1,51 @@
/* Copyright 2021 by Altain
* 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS,
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_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
KC_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_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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = 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, 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, 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, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

+ 1
- 0
keyboards/blaster75/keymaps/via/rules.mk View File

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

+ 31
- 0
keyboards/blaster75/readme.md View File

@ -0,0 +1,31 @@
# Blaster 75
Blaster 75 is a 75% ANSI layout Custom Keyboard designed and manufactured by Altain.
* Keyboard Maintainer : ALTAiN
* Hardware Supported : Blaster 75
* Hardware Availability : Produced and Sold by ALTAiN
* Mount : Top-Mount System
* Typing Angle : 6 Degree
* Front Height : 20.2mm
## How to enter Bootloader Mode
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.
We strongly recommend this method. If the PCB is not soldered with switches at the moment, use anything that's metal (twizzers for example)
to short the (0,0) position key ("ESC" in our PCB) while plugging the USB in.
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
Make example for this keyboard (after setting up your build environment):
make blaster75:default
Flashing example for this keyboard:
make blaster75: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).

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

Loading…
Cancel
Save